iphone – NSPredicate功能或选择器

iphone – NSPredicate功能或选择器,第1张

概述我有很多人需要过滤NSManagedObjects,并且希望在初始获取中执行此 *** 作,而不是之后过滤数组.我以前在谓词中使用过选择器,但从来没有在获取NSManagedObjects时,例如我拥有所有员工,然后我在NSArray上使用这个谓词… [NSPredicate predicateWithFormat:@"SELF isKindOfClass:%@", [Boss class]] …但现在我 我有很多人需要过滤NSManagedobjects,并且希望在初始获取中执行此 *** 作,而不是之后过滤数组.我以前在谓词中使用过选择器,但从来没有在获取NSManagedobjects时,例如我拥有所有员工,然后我在NSArray上使用这个谓词…

[nspredicate predicateWithFormat:@"SELF isKindOfClass:%@",[Boss class]]

…但现在我想根据对象的不同属性做更多的数学运算.我以为我可以做点什么……

[nspredicate predicateWithFormat:@"SELF bonusIsAffordable:%f",howMuchMoneyTheCompanyHas];

..其中bonusIsAffordable:是我的员工类的一种方法,并计算我是否有能力支付给他们奖金.但我得到一个错误……

UnkNown/unsupported comparison predicate operator type cocoa

我搞砸了什么想法?

解决方法 只有在内存中限定对象时,才能在nspredicate中执行任意代码.对于sqlite支持的NSPersistentStore,nspredicate被编译为sql并在sqlite查询引擎上执行.由于sqlite没有Objective-C的知识,也没有实例化任何对象,因此无法执行任意代码.

对于内存中查询(针对集合或内存或原子Core数据存储),请查看NSExpression,特别是[NSExpression ExpressionForFunction:selectorname:arguments:]和[NSExpression ExpressionForBlock:arguments:].给定这样的表达式,您可以以编程方式构建nspredicate.

总结

以上是内存溢出为你收集整理的iphone – NSPredicate功能或选择器全部内容,希望文章能够帮你解决iphone – NSPredicate功能或选择器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1031783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存