Objective Cに2つの配列があり、同じ場所に挿入できるように、何かがインデックスであるかを見つける必要があります。たとえば、「名前配列」と「年齢配列」があるとします。「name配列」にあるインデックス「charlie」を確認して、「age」配列のどこに彼の年齢を挿入するかを知るにはどうすればよいですか?
ありがとう
Objective Cに2つの配列があり、同じ場所に挿入できるように、何かがインデックスであるかを見つける必要があります。たとえば、「名前配列」と「年齢配列」があるとします。「name配列」にあるインデックス「charlie」を確認して、「age」配列のどこに彼の年齢を挿入するかを知るにはどうすればよいですか?
ありがとう
-[NSArray indexOfObject:]
論理的な選択のようです。
Cocoaでは、並列配列は破滅と破滅への道です。バインディングではそれらを効果的に使用できないため、バインディングが存在しないかのように、代わりに多くのグルーコードを作成する必要があります。さらに、実装を開始する前に、将来のAppleScript /ScriptingBridgeサポートを無効にすることになります。
正しい方法はname
、age
プロパティを使用してモデルクラスを作成し、そのクラスのインスタンスの単一の配列を作成することです。次に、名前または年齢でアイテムを検索するには、を使用NSPredicate
して配列をフィルターindexOfObjectIdenticalTo:
処理し、メイン配列のフィルター処理された配列から各アイテムのインデックスを検索します。
indexOfObject:
との違いindexOfObjectIdenticalTo:
は、前者はisEqual:
各オブジェクトが探しているオブジェクトであるかどうかを判断するメッセージを送信するのに対し、後者は渡された特定のオブジェクトのみを検索することです。したがって、にindexOfObject:
ないオブジェクトで使用できます。配列ですが、配列内で等しいオブジェクトを見つけるために、つまり1に等しくなります。
文字列に基づいてルックアップを行う場合は、NSDictionaryも使用することをお勧めします。