如果你比較熟悉Java或C#代碼等同於這樣的事:
// Assuming stories is declared as: List<Dictionary<string, string> stories;
Dictionary<string, string> story = stories[indexPath.row];
cell.Text = String.Format(story["message"]);
在Smalltalk風格(因此Objective-C的太)的面向對象的編程,方法更像消息到其它對象。所以一個好的Objective-C方法名應該像英文句子(Subject-Verb-Object)一樣閱讀。由於這方面的工作與字典(哈希表)看起來是這樣的:
[myDictionary setObject:@"Value" forKey:@"someKey"];
[myDictionary objectForKey:@"someKey"]; // == @"Value"
在Java中這將是:
myDictionary.put("someKey", "Value");
myDictionary.get("someKey"); // == "Value"
注意這個鍵(「someKey」)是如何在Java中的第一個參數例。在Objective-C中,用方法名稱命名參數,因此爲setObject: forKey:
。另請注意,在Objective-C字符串中以@符號開頭。這是因爲Objective-C字符串與常規C字符串不同。在使用Objective-C時,你幾乎總是使用Objective-C的@字符串。
在C#中有對字典的特殊語法,使其成爲:
myDictionary["someKey"] = "Value";
myDictionary["someKey"]; // == "Value"
如果你是新的,你可能會遇到的一個重要問題是原生類型的問題。
在Java中爲int添加到您曾經有過做一個解釋:
myDictionary.put("someKey", new Integer(10));
因爲基本類型(int,炭/短路,字節,布爾)不是真正的對象。 Objective-C也有這個問題。所以,如果你想要把一個int到字典中必須使用的NSNumber像這樣:
[myDictionary setObject:[NSNumber numberForInt:10]
forKey:@"someKey"];
你拔出整數像這樣:
NSNumber *number = [myDictionary objectForKey:@"someKey"];
[number intValue]; // == 10
編輯:
您的代碼可能如果你的字符串中有'%'字符,就會崩潰,因爲stringWithFormat就像NSLog一樣,它需要很多參數。因此,如果story [「message」]是「Hello」,那麼它將在沒有額外參數的情況下正常工作,但如果它是「Hello%@」,則需要向stringWithFormat添加一個參數。
NSString *message = @"Hello %@";
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:message forKey:@"message"];
NSString *output = [NSString stringWithFormat:[dict objectForKey:@"message"], @"World!"];
// output is now @"Hello World!".
awesome ...如何深入知識你有..wonderful :-) 謝謝,我希望能像你一樣 – prajakta 2010-09-02 06:22:59