【发布时间】:2018-07-17 22:57:55
【问题描述】:
我正在尝试创建一个 NSPredicate 可以将两个属性相加并将其与对象的另一个属性进行比较:
Object.property1 + Object.property2 我尝试了 (%K + %K)
PS:即使某些属性为空,也应该可以工作。 我试图避免使用大量复合谓词。 谢谢,
弗洛林
【问题讨论】:
-
我觉得如果加上一个计算属性会容易很多:
@property (nonatomic, assign), NSIntegerOrDoubleOrWhatever property4;-(NSIntegerOrDoubleOrWhatever)property4 {return self.property1 + self.property2;},那么格式就是[NSPredicate predicateWithFormat:@"%K < %@", @"property4", @(property3)] -
这将是最佳的,但我当前的代码结构不支持,这是我必须做的核心数据获取。
-
stackoverflow.com/questions/34063965/… 你应该可以这样做。自从我玩 CoreData 已经有一段时间了,但答案似乎是合法的。
-
您建议使用 Transient 属性,我已经尝试过了,但 Apple 说:“您无法使用基于瞬态属性的谓词进行获取(尽管您可以使用瞬态属性自己在内存中进行过滤)。” 《核心数据编程指南》
-
[NSPredicate predicateWithFormat:@"(%K + %K) < %K", prop1Name, prop2Name, prop3Name]应该可以工作——你试过了吗?
标签: ios objective-c sum operators nspredicate