24

辞書オブジェクトを含む配列があります。各辞書では、キーは共通です。次に、そのキーのすべての値を取得します。私は反復でこれらの値を取得しましたが、私はこの仕事をするいくつかの簡単な方法またはデフォルトの方法を探しています。

目的にかなうデフォルトのメソッドを1つ取得するのを手伝ってもらえますか?ありがとう。

データ構造は次のようになります。

<array>
    <dict>
        <key>Match</key>
        <string>Football</string>
        <key>Stadium</key>
        <string>XXXXX</string>
    </dict>
    <dict>
        <key>Match</key>
        <string>HOCKY</string>
        <key>Stadium</key>
        <string>XXXXX</string>
    </dict>
 </array>

私は今これをやっています:

NSMutableArray * matches = [[NSMutableArray alloc] init];
        for (int i = 0; i< myArray.count; i++){
            [matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i];
        }
        [matchDataArray addObjectsFromArray:matches];

それは私に正しい答えを与えます。しかし、私はこの反復を行いたくありません。配列のすべてのインデックスから「Match」キーのすべての値を返し、一度に別の配列に保存するメソッドが必要です。新しく作成された配列には、配列のすべてのインデックスからの一致キーの値のみが含まれます。

これは可能ですか?

4

1 に答える 1

68

それを行うキー値コーディングを使用した巧妙なトリックがあります。

NSArray *matches = [myArray valueForKey: @"Match"];

実際の例を次に示します。

NSArray *anArray = @[
                      @{@"aWord" : @"I"},
                      @{@"aWord" : @"have"},
                      @{@"aWord" : @"an"},
                      @{@"aWord" : @"array"},
                      @{@"aWord" : @"which"},
                      @{@"aWord" : @"contains"},
                      @{@"aWord" : @"dictionary"},
                      @{@"aWord" : @"objects."},
                      @{@"aWord" : @"Etc."},
                      ];

NSArray *aWordArray = [anArray valueForKey:@"aWord"];

この最後の行の後aWordArrayに、辞書の元の配列と同じ順序で単語が含まれます。

于 2013-02-22T07:10:03.560 に答える