我有一個NSFetchedResultsController
我設置如下: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)
}
問題是即使有includesPendingChanges
設置爲false,它劇照每次我在創建新對象時調用controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?)
上下文(不保存)。
有什麼我應該尋找以避免這種情況?
有趣。如果直接執行獲取請求而不是將其傳遞給FRC會發生什麼?你還會獲取未保存的對象嗎?解決方法是在單獨的子上下文中創建新對象,並在您準備好之前不保存到mainContext。 –
跟蹤更改 - 這正是FRC的要點。我想它只是忽略'includesPendingChanges'。如果你不需要這些改變 - 只需執行一次抓取,你就會得到一個不錯的「NSArray」。 – bteapot