gpt4 book ai didi

objective-c - 子类化 NSPredicate 以添加运算符

转载 作者:太空狗 更新时间:2023-10-30 03:50:45 25 4
gpt4 key购买 nike

Cocoa 定义谓词类(NSPredicateNSExpression 等)“提供了在 Cocoa 中指定查询的通用方法” Predicate Programming 。这组类描述了我的需要,但有一个小缺点:我想要额外的运算符。

NSComparisonPredicate 已经处理了 14 个运算符 ( NSPredicateOperatorType ),但我想添加,比如说,时间运算符……或运算符来表示诸如:

  • "变量 至少有 n "(二元运算符)
  • "变量 具有 至多, n 连续几天(三元运算符)

显然,我需要自己实现这些,并且执行此类查询的数据模型必须支持这些运算符。但是,有没有办法实现它并从现有的 NSPredicate 类中受益?由于运算符被定义为 enum,我怀疑我能否在这方面进行扩展。还是我完全错过了这艘船?!

最佳答案

Having spent a lot of time playing around with NSPredicate,我不确定这是不是最好的主意。

理论上,您可以子类化 NSPredicate,创建新的初始化器和属性,然后覆盖 -evaluateWithObject:substitutionVariables: 方法以进行自定义比较。

实际上,它可能比这要困难得多。

您可以考虑改用 FUNCTION()I wrote a blog post about FUNCTION前一段时间以及它如何与 NSExpression 一起玩,因此与 NSPredicate 一起玩。就个人而言,我可能会接受这个,因为那样你仍然可以使用 +predicateWithFormat: 语法来创建 NSPredicate。创建子类以添加运算符必然会阻止您使用内置解析器。

关于objective-c - 子类化 NSPredicate 以添加运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com