我有一个应用程序,其中我将成员的详细信息作为字典。我想从字典中添加一个包含特定对象的数组。我所拥有的响应是这样的,
{
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。有人可以帮助我吗?
答案 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);
感谢。