2

我正在开发一个基于 ABAddressBook 的应用程序。我想使用谓词来评估或比较 abaddressbook 中的对象。但似乎 ABAddreesBook 是一个 Core Fundation 框架,不支持 KVC。这是否意味着我不能在我的应用程序中使用谓词?

还是有其他方法可以做谓词之类的事情?

4

1 回答 1

2

简短的回答是:你不能。

长答案是:你可以,但这需要很多工作。我可能会做这样的事情:

  1. 递归所有NSExpressions谓词以聚合所有-keyPath字符串并将它们存储在数组中。这些将是ABRecord您要查询的对象的属性。
  2. 遍历您的ABRecord对象数组并创建一个字典来表示每个对象。该字典将具有 recordID 以及ABRecordCopyValue()您想要的每个“keypaths”的值,并键入属性名称。
  3. 这些字典将聚合在一个数组中。
  4. 这个新数组(字典)将使用谓词过滤
  5. 过滤后,减少的字典数组将转换回ABRecord对象数组并返回。

这听起来像是一个有趣的问题。我会再考虑一下,也许会回来编辑我的答案。

于 2011-05-16T21:41:53.337 回答