2

ABAddressBookベースのアプリケーションを開発しています。述語を使用して、abaddressbook内のオブジェクトを評価または比較したいと思います。しかし、ABAddreesBookはコアファンデーションフレームワークであり、KVCをサポートしていないようです。これは、アプリケーションで述語を使用できないことを意味しますか?

または、述語のようなことを行う他の方法はありますか?

4

1 に答える 1

2

簡単な答えは:あなたはできません。

長い答えは次のとおりです。できますが、それは多くの作業になります。私はおそらくこのようなことをするでしょう:

  1. すべての述語を再帰的に処理してNSExpressions、すべての文字列を集約し、-keyPathそれらを配列に格納します。これらは、ABRecordクエリするオブジェクトのプロパティになります。
  2. オブジェクトの配列を繰り返し処理し、ABRecordそれぞれを表す辞書を作成します。このディクショナリには、レコードIDとABRecordCopyValue()、プロパティ名にキー設定された、必要な各「キーパス」の値が含まれます。
  3. これらの辞書は配列に集約されます。
  4. この(辞書の)新しい配列は、述語でフィルタリングされます
  5. フィルタリング後、辞書の縮小された配列はABRecordオブジェクトの配列に変換されて返されます。

これは興味深い問題のように聞こえます。これについてもう少し考えて、おそらく戻って私の答えを編集します。

于 2011-05-16T21:41:53.337 に答える