NSFetchedResultsController 不使用谓词 @count 调用委托
Posted
技术标签:
【中文标题】NSFetchedResultsController 不使用谓词 @count 调用委托【英文标题】:NSFetchedResultsController not calling delegate with predicate @count 【发布时间】:2015-12-13 15:12:38 【问题描述】:我有一个获取的结果控制器,当它有一个谓词时它没有调用它的委托。谓词仅包含具有events
的对话对象:
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()
这适用于初始提取,但在添加数据后,它不会调用委托。删除谓词后,它会调用委托。
我还有其他方法吗?
【问题讨论】:
添加的数据是否满足events.@count > 0
的要求?
是的。重新启动应用程序后(因此调用performFetch
),它会更新显示添加的数据。
【参考方案1】:
fetch 谓词只能检查 Core Data 属性,因为对象本身仍然是错误的。 fetch 谓词不会获取请求实体的所有对象然后过滤它们,它只是获取通过过滤谓词的对象。
作为一种解决方法,您可以获取 Event 实体。然后使用部分键按对话分组。
【讨论】:
以上是关于NSFetchedResultsController 不使用谓词 @count 调用委托的主要内容,如果未能解决你的问题,请参考以下文章