2017-07-27 23 views
3

我有一個數組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

你能發表任何答案,所以我可以標記你的正確嗎? –

回答

3

您可以測試在指數路徑的行不是獼猴桃:

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 */ 
    } 
}