2016-03-08 99 views
3

这两个将NSDictionary转换为NSArray的语法有什么区别?将NSDictionary转换为NSArray

// replyInfo是的NSDictionary

 NSArray *values=[[NSArray alloc]init]; 
    values = [replyInfo valueForKey:@"response"];//when this? 
    values = [replyInfo allValues];//when this? 
+0

您是否知道您正在创建一个'NSArray',然后立即抛出它并覆盖'values'变量? – mttrb

+0

您可以显示回复,以便我们更好地理解它。 – DJ1

+0

'valueForKey:'是一种具有特殊行为的键值编码方法。基本上你不应该使用它来获得一个关键的单个值。改为使用'objectForKey:'。 – vadian

回答

5
values = [replyInfo valueForKey:@"response"]; 

这给你从字典特定键值。

values = [replyInfo allValues];返回一个包含字典的值

values = [replyInfo allKeys];将返回所有键的排列在词典中的新阵列。

何时使用:

  • 当你想从字典访问特定项目去

    values = [replyInfo valueForKey:@"response"]; 
    
  • 当你想要做的,通过所有的值的东西与像迭代所有值或某些事去寻求

    values = [replyInfo allValues]; 
    
+0

但是,replyInfo allValues-将字典的所有值赋予0索引。我想获得每个数据值[0],值[1] ..这样? –

+0

这就是因为你的replyInfo只有一个值 – iAnurag

+0

你能显示响应吗? – iAnurag

0

allValues:它的返回类型是一个数组。它给你的字典(不是键)的值。如果字典为空,则返回nil。

valueForKey:它的返回类型是id。这意味着此方法可以返回任何对象(如NSArray,NSDictionary,NSString等)。

0

假设你所得到的响应,下面给出

{ 
"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 
0
NSArray *values = [[replyInfo valueForKey:@"response"] allValues]; 

可以将您的请尝试。