我有一个具有Entity FOOD的数组fruit = ["Apple", "Orange", "Pear", "Kiwi"]
,并在UItableView中显示。有没有办法让一些内容无法取消。例如,我可以让"Kiwi"
取消删除。
有点像,
let i = fruit.index(where: "Kiwi")
let IArr = [0...fruit.count]
IArr = IArr.filter{$0 != i}
//删除Kiwi的索引
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 :(得分:4)
您可以测试索引路径中的行不是Kiwi:
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 */
}
}
答案 1 :(得分:0)
如果向左滑动时未显示编辑部分。您可以使用它。
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
let FRUIT = fruit[indexPath.row]
if (FRUIT != "Kiwi") {
return true
}
return false
}