NSPredicate使用Core Data objectID不能不一致地工作?

时间:2018-01-16 12:13:34

标签: ios core-data nspredicate

想知道是否有人能看到我似乎在这里遗漏的明显事物。我正在开发一个使用各种核心数据实体的应用程序。这些实体存储对各种其他源文件的引用。我希望Core Data对象的可用性/可见性能够反映源文件的可用性。

所以在启动时,我遍历源代码,如果可用的话,我将任何相关CD对象的NSManagedObjectID添加到NSMutableSet,让我们称之为availableObjectIDs。

我的理解是使用谓词

"self IN..."

对于Core Data应该根据对象ID进行评估,所以在我的fetch查询中我使用了NSPredicate

"self IN %@", availableObjectIDs

这似乎不正常。当我使用实体X获取对象时,它返回其objectID已将 not 添加到availableObjectIDs的对象。我可以使用

评估结果
[availableObjectIDs contains:object.objectID]

有些会返回false,即使谓词应该过滤掉它们!

奇怪的是,相同的谓词 在获取实体Y时似乎有效。我无法看到实体配置有任何区别来解释这一点。我尝试过使用NSComparisonPredicate,它似乎表现得一样。

这个看似简单的问题令人困惑。有人碰到类似的东西吗?

0 个答案:

没有答案