我正在开发核心数据应用程序。我正在使用Xcode 8.2。
并未调用NSFetchedResultsControllerDelegate的所有更改方法来更改对象。 (即当我将新对象插入上下文时)
有谁知道为什么会这样?为了验证我没有输入错误,我甚至从典型的主 - 详细应用模板中复制粘贴。
我希望为tableview行设置动画。
// works
func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>)
// DOESN'T WORK!!
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>,
didChange anObject: Any,
at indexPath: IndexPath?,
for type: NSFetchedResultsChangeType,
newIndexPath: IndexPath?)
// WORKS
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>)
答案 0 :(得分:0)
我弄清楚问题是什么。我正在使用基类(比如说)MyFetchedResultsControllerTableViewDataSource
,其中NSFetchedResultsController被实例化,并且谁的委托被指定为'self'。
问题是基类没有实现子类所在的那些方法。我必须在baseclass中创建一个默认实现然后覆盖,然后它才能工作。
这与objective-C不同,后者会在运行时检查“respondsToSelector”的可选方法实现...