NSFetchedResultsControllerDelegate 和 Swift 3 - 不调用 didChange 方法
NSFetchedResultsControllerDelegate and Swift 3 - not calling didChange methods
我正在开发 Core Data 应用程序。我正在使用 Xcode 8.2.
并非所有 NSFetchedResultsControllerDelegate 的更改方法都没有被调用来更改对象。 (即当我将一个新对象插入到上下文中时)
有人知道这是为什么吗?为了验证我没有打错字,我什至从典型的主从应用程序模板中复制粘贴了它。
我希望为表格视图行设置动画。
// 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>)
我知道问题出在哪里了。我正在使用一个基类(比如)MyFetchedResultsControllerTableViewDataSource
,其中 NSFetchedResultsController 被实例化并且谁的委托被指定为 'self'。
问题是基类没有实现子类所在的那些方法。我不得不在基类中创建一个默认实现,然后覆盖,然后它就起作用了。
这与 objective-C 不同,后者会在运行时使用 'respondsToSelector'...
检查可选方法的实现
我正在开发 Core Data 应用程序。我正在使用 Xcode 8.2.
并非所有 NSFetchedResultsControllerDelegate 的更改方法都没有被调用来更改对象。 (即当我将一个新对象插入到上下文中时)
有人知道这是为什么吗?为了验证我没有打错字,我什至从典型的主从应用程序模板中复制粘贴了它。
我希望为表格视图行设置动画。
// 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>)
我知道问题出在哪里了。我正在使用一个基类(比如)MyFetchedResultsControllerTableViewDataSource
,其中 NSFetchedResultsController 被实例化并且谁的委托被指定为 'self'。
问题是基类没有实现子类所在的那些方法。我不得不在基类中创建一个默认实现,然后覆盖,然后它就起作用了。
这与 objective-C 不同,后者会在运行时使用 'respondsToSelector'...
检查可选方法的实现