NSFetchedResultsControllerDelegate和Swift 3-不调用didChange方法

NSFetchedResultsControllerDelegate和Swift 3-不调用didChange方法,swift,core-data,nsfetchedresultscontroller,Swift,Core Data,Nsfetchedresultscontroller,我正在开发一个核心数据应用程序。我使用的是Xcode 8.2 并非所有NSFetchedResultsControllerDelegate的更改方法都不会被调用以更改对象。(即,在上下文中插入新对象时) 有人知道为什么会这样吗?为了验证我没有输入错误,我甚至从一个典型的主细节应用程序模板复制粘贴了它 我希望为tableview行设置动画 // works func controllerWillChangeContent(_ controller: NSFetchedResultsControll

我正在开发一个核心数据应用程序。我使用的是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>)
//有效
func controllerWillChangeContent(\ucontroller:NSFetchedResultsController)
//没用!!
func控制器(\控制器:NSFetchedResultsController,
改变一个对象:任何,
在indexPath:indexPath?,
对于类型:NSFetchedResultsChangeType,
newindepath:indepath?)
//工作
func controllerDidChangeContent(\控制器:NSFetchedResultsController)

我找到了问题所在。我使用的是一个基类(比如说)
MyFetchedResultsController表ViewDataSource
,其中NSFetchedResultsController被实例化,并且谁的委托被指定为“self”

问题是基类没有实现那些子类所在的方法。我必须在基类中创建一个默认实现,然后重写,然后它才能工作


这与objective-C不同,objective-C会在运行时使用“respondsToSelector”检查可选的方法实现…

我发现了问题所在。我使用的是一个基类(比如说)
MyFetchedResultsController表ViewDataSource
,其中NSFetchedResultsController被实例化,并且谁的委托被指定为“self”

问题是基类没有实现那些子类所在的方法。我必须在基类中创建一个默认实现,然后重写,然后它才能工作

这与objective-C不同,objective-C将在运行时使用“respondsToSelector”检查可选的方法实现