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以获取值(内部字典)。然后只需将“名称”的值添加到结果数组中。示例(假设字典名为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 回答