在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
不能把数组类型的工作指标。 我该怎么做?
答
您可以测试在指数路径的行不是猕猴桃:
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 */
}
}
我真的不跟着你。当水果是Kiwi时,您可以简单地禁止删除操作:'let FRUIT = fruit [indexPath.row];如果editingStyle == .delete && FRUIT!=“Kiwi”{/ * delete * /}' –
这就是一个简单的答案!谢谢! –
你能发表任何答案,所以我可以标记你的正确吗? –