【发布时间】:2012-01-19 12:54:36
【问题描述】:
我在我的应用程序中设置了 CoreData,并且我有一个属性为“isSpecial”布尔值的实体。对于“isSpecial”为真的记录,我希望这些记录不能被用户从它所显示的 UITableView 中删除。
那么我该怎么做呢?如何直接看到用户“isSpecial”选择的单元格?
谢谢,非常感谢任何帮助。
【问题讨论】:
标签: iphone objective-c ipad uitableview core-data
我在我的应用程序中设置了 CoreData,并且我有一个属性为“isSpecial”布尔值的实体。对于“isSpecial”为真的记录,我希望这些记录不能被用户从它所显示的 UITableView 中删除。
那么我该怎么做呢?如何直接看到用户“isSpecial”选择的单元格?
谢谢,非常感谢任何帮助。
【问题讨论】:
标签: iphone objective-c ipad uitableview core-data
假设您在表格视图上使用滑动删除,最好使用tableView:canEditRowAtIndexPath: 并且仅在isSpecial 为假时才允许编辑。这将阻止用户点击删除按钮并且没有任何事情发生
【讨论】:
[self.fetchedResultsController objectAtIndexPath:indexPath],但不能做objectForRowAtIndexPath。这应该有所作为吗?但是我对此没有任何运气。我知道它可能是什么,但在我说任何可能会影响你的想法之前,有什么想法吗?
objectAtIndexPath:
NSIndexPath *path = [NSIndexPath indexPathForRow:(indexPath.row - 1) inSection:indexPath.section];。这会将索引减去一个,这在我的所有其他 tableview 委托方法中对我来说非常有效,但是这一次它并没有阻止我获取超出范围错误的索引并导致应用程序崩溃。
您可以为您的实体子类化NSManagedObject(如果您还没有),并覆盖validateForDelete: 以检查对象的isSpecial 属性。
你还应该调用 super 的实现,as detailed here。
如果您想以编程方式删除它,您只需在尝试删除之前将isSpecial 设置为NO。
【讨论】: