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