在UITableView中只能删除一些行[Swift 3.0 - Xcode 8]

问题描述:

我有一个数组fruit = ["Apple", "Orange", "Pear", "Kiwi"],它具有Entity FOOD并呈现在UItableView中。有没有办法让某些内容不可删除?例如,我可以让"Kiwi"无法解决。在UITableView中只能删除一些行[Swift 3.0 - Xcode 8]

喜欢的东西, let i = fruit.index(where: "Kiwi") let IArr = [0...fruit.count] IArr = IArr.filter{$0 != i} //删除猕猴桃

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IArr) { 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let context = appDelegate.persistentContainer.viewContext 

    if editingStyle == .delete{ 
     let FRUIT = fruit[indexPath.row] 
     context.delete(FRUIT) 

     appDelegate.saveContext() 
     do { 
      fruit = try context.fetch(FOOD.fetchRequest()) 
     } 
     catch 
     { 
      print("did not fetch")} 
     } 
     tableView.reloadData()} 

然而,这并不因为indexPath不能把数组类型的工作指标。 我该怎么做?

+0

我真的不跟着你。当水果是Kiwi时,您可以简单地禁止删除操作:'let FRUIT = fruit [indexPath.row];如果editingStyle == .delete && FRUIT!=“Kiwi”{/ * delete * /}' –

+0

这就是一个简单的答案!谢谢! –

+0

你能发表任何答案,所以我可以标记你的正确吗? –

您可以测试在指数路径的行不是猕猴桃:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IArr) { 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let context = appDelegate.persistentContainer.viewContext { 

    let FRUIT = fruit[indexPath.row] 

    if editingStyle == .delete && FRUIT != "Kiwi" { 
     /* delete */ 
    } 
}