dcc*_*rmo 4 core-data nsfetchedresultscontroller ios
我有一个NSFetchedResultsController我设置如下:
let fetchRequest = NSFetchRequest(entityName: "Order")
fetchRequest.includesPendingChanges = false
fetchRequest.sortDescriptors = [
NSSortDescriptor(key: "status", ascending: false),
NSSortDescriptor(key: "date", ascending: false)]
self.fetchedResultsController = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: DataStoreManager.sharedInstance.mainContext,
sectionNameKeyPath: "section",
cacheName: nil)
do {
try self.fetchedResultsController.performFetch()
} catch let error as NSError {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
问题是即使includesPendingChanges设置为false,controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?)每次我在上下文中创建一个新对象时仍会调用(不保存).
还有什么我应该寻找以避免这种情况吗?
建议的方法是使用子上下文.父项应该是获取结果控制器中使用的主线程管理对象上下文.
如果保存,更改会立即"推送"到主上下文,即获取的结果控制器.(保存主要上下文以持久存储到持久性存储.)
如果您不想保存,只需丢弃子上下文而不保存.获取的结果控制器永远不会知道它.
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |