核心数据 - 获取请求结果与谓词不匹配

时间:2016-09-26 15:11:18

标签: ios core-data nspredicate magicalrecord

我很担心为什么以下不起作用:

enter image description here

正如您在调试控制台中看到的那样,newerContentAvailable的值为0,即使我只想要将此值设置为1的对象。但它仍然会进入结果。

是的,我正在使用MagicalRecord,但怀疑这与它有什么关系。它是一个古老而成熟的代码库,MR_findAllWithPredicate:...只是在该数据模型上创建一个获取请求,并设置获取的谓词。

我对Core Data有什么不了解吗?我承认它是一个框架的野兽,最佳实践很少。

非常感谢一些帮助!

2 个答案:

答案 0 :(得分:1)

我认为问题可能是您使用的属性名称的结果:以new...开头的名称似乎会导致一些意外行为(*)。尝试更改属性名称以查看是否对其进行排序。

(*)参见例如this question and answer

答案 1 :(得分:0)

与%@格式一起使用时,NSNumber的NSNumber值不会被替换。你必须获得返回正确类型的intValue或floatValue(doubleValue等)。

谓词应该是,

NSPredicate *findPred = [NSPredicate predicateWithFormat:@"newerContentAvailable == 1"];

OR

NSNumber *number = @1; //Or any other number
NSPredicate *findPred = [NSPredicate predicateWithFormat:@"newerContentAvailable == %d", [number intValue]];