你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS NSDictionary

iOS NSDictionary

編輯:關於IOS

看了看 objectForkey和valueForkey的區別

同樣是取值

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

[dict setValue:@"AA" forKey:@"MM"];

NSLog(@"aaa = %@",[dict objectForKey:@"MM"]);

NSLog(@"bbb = %@",[dict valueForKey:@"MM"]);

這樣是都可以正常打印出來想要的字符串『AA』

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

[dict setValue:@"AA" forKey:@"@MM"];

NSLog(@"aaa = %@",[dict objectForKey:@"@MM"]);

NSLog(@"bbb = %@",[dict valueForKey:@"@MM"]);

這個時候就不會像上一個一樣的。程序會報錯

valueForKey: 取值是找和指定 key 同名的 property accessor,沒有的時候執行 valueForUndefinedKey:,而 valueForUndefinedKey: 的默認實現是拋出 NSUndefinedKeyException 異常。

回過頭來看剛才 crash 的例子, [dict valueForKey:@"@theKey"]; 會把 key 裡的 @ 去掉,也就變成了 [dict valueForKey:@"theKey"];,而 dict 不存在 theKey 這樣的 property,轉而執行 [dict valueForUndefinedKey:@"theKey"];,拋出 NSUndefinedKeyException 異常後 crash 掉。

objectForKey: 和 valueForKey: 在多數情況下都是一樣的結果返回,但是如果 key 是以 @ 開頭,valueForKey: 就成了一個大坑,建議在 NSDictionary 下只用 objectForKey: 來取值。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved