Swift:致命错误:索引超出范围

时间:2017-06-18 15:16:00

标签: ios swift xcode uitableview swift3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    let order =  orders[indexPath.row]
    guard orders.count > indexPath.row else {
        print("Index out of range")
        return
    }

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    var viewController = storyboard.instantiateViewController(withIdentifier: "viewControllerIdentifer") as! OrderDetailsController
    viewController.passedValue = order.id
    self.present(viewController, animated: true , completion: nil)      
}

每当我关闭我的应用程序(转到后台)并重新打开它时,它就会崩溃。

  

致命错误:索引超出范围

     

2017-06-18 18:09:33.726310 JaeeDriver [1378:563304]致命错误:指数超出范围

我不知道为什么会这样做。重要的是要注意在ViewDidLoud我有这行代码来更新我的表

    var timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: "GetOrders", userInfo: nil, repeats: true)

每当更新发生时,我都会在GetOrders函数

的开头部署此代码
func GetOrders (){

orders = []

删除旧数据并将其替换为新数据

更新

GetOrder

的末尾
            }
            DispatchQueue.main.async {
                self.tableview.reloadData()
            }

部分和行数:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return orders.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     let cell = tableView.dequeueReusableCell(withIdentifier: "OrderCell", for: indexPath) as! OrderCell

    let entry = orders[indexPath.row]

    cell.DateLab.text = entry.date
     cell.shopNameLab.text = entry.shopname
    cell.shopAddLab.text = entry.shopaddress
    cell.nameClientLab.text = entry.clientName
    cell.clientAddLab.text = entry.ClientAddress
    cell.costLab.text = entry.Cost
    cell.perefTimeLab.text = entry.PerferTime
    cell.Shopimage.hnk_setImage(from: URL(string: entry.Logo))




    return cell
}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为你应该再添加一个数组说temporder。在获取新的列表后,在temporder中更改订单的数组数据并重新加载,在此添加新的清单。您正在清除订单数据并从表视图中选择列表项。但当时新订的数据并未在订单数组中添加。