我有一个提取的结果控制器,当它有谓词时,它不会调用它的'delegate。谓词仅包括具有events
:的Conversation对象
let predicate = NSPredicate(format: "events.@count > 0")
let fetchRequest = Conversation.MR_requestAllSortedBy(
"mostRecentMessage.eventDate",
ascending: false,
withPredicate: predicate)
self.fetchedResultsController = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: MagicalRecordStack.defaultStack()!.context,
sectionNameKeyPath: nil,
cacheName: nil)
self.fetchedResultsController.delegate = self
self.fetchedResultsController.MR_performFetch()
这适用于初始获取,但在添加数据时,它不会调用委托。删除谓词后,它确实会调用委托。
我还有别的办法吗?
fetch谓词只能根据Core Data属性进行检查,因为对象本身仍然是错误。fetch谓词不会获取请求实体的所有对象,然后对其进行筛选,它只是获取通过筛选谓词的对象。
作为变通方法,您可以获取Event实体。然后使用section键按Conversation分组。