2016-03-08 72 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]; 

可以將您的請嘗試。