如何使用字典中的特定项创建数组?

时间:2012-10-16 08:19:51

标签: iphone ios ipad

我有一个应用程序,其中我将成员的详细信息作为字典。我想从字典中添加一个包含特定对象的数组。我所拥有的响应是这样的,

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

我想创建一个只带有name的结果的数组。我试过这样的

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);

但添加的值为null。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

遍历objectEnumerator以获取值(内部词典)。然后只需将“name”的值添加到结果数组中。示例(假设字典名为d):

 NSDictionary* d = ...
 NSMutableArray* array = [NSMutableArray arrayWithCapacity:d.count];
 for(NSDictionary* member in d.objectEnumerator) {
     [array addObject:[member objectForKey:@"name"]];
 }

答案 1 :(得分:0)

Krumelur比我快;)他说你应该首先遍历字典值是正确的。在您的实现中,您不会在某处引用计数器变量,因此NSString名称在每次迭代中都是相同的。

答案 2 :(得分: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);

感谢。