这两个将NSDictionary转换为NSArray的语法有什么区别?将NSDictionary转换为NSArray
// replyInfo是的NSDictionary
NSArray *values=[[NSArray alloc]init];
values = [replyInfo valueForKey:@"response"];//when this?
values = [replyInfo allValues];//when this?
这两个将NSDictionary转换为NSArray的语法有什么区别?将NSDictionary转换为NSArray
// replyInfo是的NSDictionary
NSArray *values=[[NSArray alloc]init];
values = [replyInfo valueForKey:@"response"];//when this?
values = [replyInfo allValues];//when this?
values = [replyInfo valueForKey:@"response"];
这给你从字典特定键值。
凡values = [replyInfo allValues];
返回一个包含字典的值
values = [replyInfo allKeys];
将返回所有键的排列在词典中的新阵列。
何时使用:
当你想从字典访问特定项目去
values = [replyInfo valueForKey:@"response"];
当你想要做的,通过所有的值的东西与像迭代所有值或某些事去寻求
values = [replyInfo allValues];
allValues:它的返回类型是一个数组。它给你的字典(不是键)的值。如果字典为空,则返回nil。
valueForKey:它的返回类型是id。这意味着此方法可以返回任何对象(如NSArray,NSDictionary,NSString等)。
假设你所得到的响应,下面给出
{
"response" : [1, 2, 3, 4, 5]
}
然后,
values = [replyInfo allValues];
将会把这样的数据。
values[0] = NSArray ([1, 2, 3, 4, 5])
values[1] = nil
现在,要访问这样的数据;我们可以做如下,
array = [values objectAtIndex:0];
这可导致作为,
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
NSArray *values = [[replyInfo valueForKey:@"response"] allValues];
可以将您的请尝试。
您是否知道您正在创建一个'NSArray',然后立即抛出它并覆盖'values'变量? – mttrb
您可以显示回复,以便我们更好地理解它。 – DJ1
'valueForKey:'是一种具有特殊行为的键值编码方法。基本上你不应该使用它来获得一个关键的单个值。改为使用'objectForKey:'。 – vadian