0

メンバーの詳細をディクショナリとして持っているアプリケーションがあります。ディクショナリから特定のオブジェクトを含む配列を追加したいです。私が持っている応答は次のようなものです。

{
    500 =     {
        name = baddd;
        status = "<null>";
    };
    511 =     {
        name = abyj;
        status = "Hi all...:-)";
    };
    512 =     {
        name = abyk;
        status = fdffd;
    };
}

名前のみの結果で配列を作成したい.私はこのように試しました

for(int i=0;i<=self.currentChannel.memberCount;i++)
{

    NSString *name=[NSString stringWithFormat:@"%@",[self.currentChannel.members objectForKey:@"name"]] ;  
    NSLog(@"%@",name);
    [searchfriendarray addObject:name]; 


}
NSLog(@"%@",searchfriendarray);

しかし、付加価値はゼロです。誰でも私を助けることができますか?

4

3 に答える 3

1

トラバースobjectEnumeratorして値(内部辞書)を取得します。次に、結果の配列に「name」の値を追加するだけです。例(辞書の名前が付けられていると仮定d):

 NSDictionary* d = ...
 NSMutableArray* array = [NSMutableArray arrayWithCapacity:d.count];
 for(NSDictionary* member in d.objectEnumerator) {
     [array addObject:[member objectForKey:@"name"]];
 }
于 2012-10-16T08:24:22.583 に答える
0

Krumelur は私よりも高速でした ;) 最初に辞書の値をトラバースする必要があると彼が言っているのは正しいです。実装では、カウンター変数 i をどこかで参照していないため、NSString 名は各反復で同じです。

于 2012-10-16T08:32:39.200 に答える
0

これはあなたを助けるかもしれません..

// here you can get Array of Dictionary First
     NSArray *arr = [[NSArray alloc] initWithContentsOfFile:@""]; // get array first from your response
     NSDictionary *temp = [[NSDictionary alloc] initWithDictionary:self.currentChannel.members];
    for(int i=0;i<=self.currentChannel.memberCount;i++)
    {

        NSDictionary *temp = [arr objectAtIndex:i];
        NSString *name=[NSString stringWithFormat:@"%@",[temp objectForKey:@"name"]] ;  
        NSLog(@"%@",name);
        [searchfriendarray addObject:name]; 


    }
    NSLog(@"%@",searchfriendarray);

ありがとう。

于 2012-10-16T08:42:18.903 に答える