這兩個將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