我想获取数组中的所有键值。我在这里使用了关键字allKeysForObject
。在使用allKeysForObject
时,我在括号内得到了值。我想存储没有括号的值。
这是我的代码:
dict = [[NSMutableDictionary alloc]init];
[dict setValue:@"Hai" forKey:@"1"];
[dict setValue:@"lrd" forKey:@"2"];
NSArray *keys = [dict allKeys];
NSMutableArray *countryArray = [[NSMutableArray alloc]init];
NSMutableArray *keyObjects = [[NSMutableArray alloc]init];
for(NSString* key in keys) {
NSString *obj = [dict objectForKey:key];
[countryArray addObject:obj];
}
for (int i =0; i < [countryArray count]; i++) {
[keyObjects addObject:[dict allKeysForObject: [countryArray objectAtIndex:i]]];
}
NSLog(@"%@",[keyObjects objectAtIndex:0]);
NSLog值为:
2013-11-28 17:12:48.400 Help[6775:c07] (
1
)
提前致谢。
答案 0 :(得分:4)
替换:
NSLog(@"%@",[keyObjects objectAtIndex:0]);
使用:
NSLog(@"%@",[keyObjects objectAtIndex:0][0]);
您正在keyObjects
中存储由allKeysForObject:
返回的值NSArray
。
答案 1 :(得分:1)
而不是使用loop
从NSDictionary
获取所有关键值,使用- (NSArray *)allKeys;
这样做的方法。使用给定的方法总是好的,而不是编写我们自己的代码来实现相同的方法。
所以用以下代码替换for loop
......
keyObjects = [[dict allKeys]mutableCopy]; // mutableCopy because I think you want it mutable as your array is mutable.
修改强>
AFA您的代码问题,您正在获得括号,因为您将keyObjects数组中的所有键存储为数组,这就是为什么您可以在日志语句中看到那些括号。这是因为allKeysForObject
方法返回与给定对象相关的键数组。
如果你想在这里以你的方式完成它就是......
for (int i =0; i < [countryArray count]; i++) {
[keyObjects addObject:[dict allKeysForObject: [[countryArray objectAtIndex:i]0]]];
}
答案 2 :(得分:1)
您将使用 [dict allValues] 获取 NSDictionary 中的所有值。你不需要手动迭代数组
dict = [[NSMutableDictionary alloc]init];
[dict setValue:@"Hai" forKey:@"1"];
[dict setValue:@"lrd" forKey:@"2"];
NSMutableArray *countryArray = [[dict allValues] mutableCopy];
NSMutableArray *keyObjects = [[NSMutableArray alloc]init];
for (int i =0; i < [countryArray count]; i++) {
[keyObjects addObject:[dict allKeysForObject: [countryArray objectAtIndex:i]]];
}
NSLog(@"%@",[keyObjects objectAtIndex:0][0]);
答案 3 :(得分:0)
NSLog
- ing:
每当你看到(...)
时,它就是数组。
每当你看到{...}
时,它就是字典。
因此,在您的情况下,它显示为(1)
,因此这是一个包含一个对象的数组。
因此,您需要通过一个级别来检索它。
NSLog(@"%@",[[keyObjects objectAtIndex:0] objectAtIndex:0]); //or
NSLog(@"%@",[keyObjects objectAtIndex:0][0]);