NSFetchedResultsController没有使用谓词@count调用委托

时间:2015-12-13 15:12:38

标签: ios swift nspredicate nsfetchedresultscontroller nsfetchrequest

我有一个获取的结果控制器,当它有一个谓词时,它不会调用它的'委托。谓词仅包含具有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()

这适用于初始提取,但是在添加数据时,它不会调用委托。删除谓词后,它会调用委托。

我应该采取另一种方式吗?

1 个答案:

答案 0 :(得分:0)

fetch谓词只能检查Core Data属性,因为对象本身仍然是故障。获取谓词不会获取所请求实体的所有对象,然后对它们进行过滤,它只会获取通过过滤谓词的那些对象。

作为一种解决方法,您可以获取Event实体。然后使用section key按对话分组。