0

以下のような構造化配列があります

 (
        {
        id = 0;
        name = "A";
        tables =         (
                        {
                comment = "";
                id = 0;
                name = "T1";
            },
                        {
                comment = "";
                id = 1;
                name = "T2";
            },
                        {
                comment = "";
                id = 4;
                name = "T3";
            }
        );
    },
        {
        id = 1;
        name = "B";
        tables =         (
                        {
                comment = "";
                id = 5;
                name = "T1";
            },
                        {
                comment = "";
                id = 6;
                name = "T2";
            }
        );
    }
) 

辞書の 1 つの id キーの値がわかっている場合 (id=6 としましょう)、その親辞書を取得するにはどうすればよいか、より正確には name キーの値 (この場合は B) を取得できます。

述語文字列を使用してみましたが、問題は、親辞書にも id という名前のキーがあるため、間違った結果が得られることです。

編集: ID キーは一意です (また、最初の辞書の要素の ID が、より高いインデックスを持つ辞書の ID よりも低い intiger 値を持つ必要はありません)

4

1 に答える 1

0

これを試してください。配列は構造化配列です。

NSDictionary *parentDict=[[NSDictionary alloc]initWithDictionary:nil];
NSString *name=[[NSString alloc]init];
NSArray *table=[[NSArray alloc]initWithArray:nil];
for (NSDictionary * dict in array) {
    table=[dict objectForKey:@"tables"];
    for (NSDictionary *childDict in table) {
        if ([[childDict objectForKey:@"id"]isEqualToString:@"6"]) {
            //if your id value is int then use ==6 to check 
            parentDict=dict;
            name=[dict objectForKey:@"name"];
            return;                
        }
    }
}
于 2012-09-25T10:48:24.240 に答える