想知道是否有人能看到我似乎在这里遗漏的明显事物。我正在开发一个使用各种核心数据实体的应用程序。这些实体存储对各种其他源文件的引用。我希望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,它似乎表现得一样。
这个看似简单的问题令人困惑。有人碰到类似的东西吗?