在表中插入一行时,“试图将第0行插入第0部分,但更新后第0部分只有0行”

时间:2018-12-11 04:14:19

标签: ios swift

当我尝试在表中插入一行时,出现了此错误。我已经看了几个小时的其他答案,但要么他们做的是不同的事情,要么是用目标C编写的。我是新手,所以我可能做的很明显是我不能弄清楚的错误。

这是我的代码:

import UIKit
import Alamofire
import SwiftyJSON
import SwiftDate

class LaunchesViewController: UIViewController {

    @IBOutlet var launchesTable: UITableView!

    var launches : [Launch]!

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        loadLaunches()
    }

    func loadLaunches()
    {

        Alamofire.request("http://10.0.0.26:5000/V1/Launches/Test", method: .get).validate().responseJSON { response in

            let json = JSON(response.result.value!)

            let jsonArray = json.arrayValue

            self.launches = []

            for jsonObject in jsonArray {

                self.launches.append(Launch(launchDate:     jsonObject["LaunchDate"].string?.toDate(),  launchName: jsonObject["LaunchName"].string))
            }

            self.onLaunchesLoaded()
        }
    }

    func onLaunchesLoaded()
    {
        self.launchesTable.beginUpdates()
        self.launchesTable.insertRows(at: [IndexPath.init(row: 0, section: 0)], with: .none)
        self.launchesTable.endUpdates()
    }

}

1 个答案:

答案 0 :(得分:0)

您应该正确配置表视图的数据源。 首先,根据您的网络请求返回的数据,通过numberOfSectionsInTableView:指定节数和tableView:numberOfRowsInSection:行数。另外,由于重用了表格视图单元格,因此填充表格视图单元格的最佳方法是通过表格视图数据源tableView:cellForRowAtIndexPath:方法,而不是调用insertRows()方法。这应该在Basics of TableView Creation中涵盖。