2011-02-27 77 views
5

嘿傢伙, 真的很快試圖添加一個密鑰到.plist,幾乎有它,第四行的正確版本是什麼?謝謝!添加密鑰到NSDictionary(iPhone SDK)

NSString *path = [[NSBundle mainBundle] pathForResource:@"Favourites" ofType:@"plist"]; 
    NSDictionary *rootDict = [[NSDictionary alloc] initWithContentsOfFile:path]; 
    [rootDict addKey:@"Test"]; //guessed code 
    [rootDict writeToFile:path atomically: YES]; 

回答

12

幾乎都有它

不是真的。

您無法更改NSDictionary。你不能寫入主要捆綁。


工作代碼:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Favourites" ofType:@"plist"]; 
NSMutableDictionary *rootDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; 
[rootDict setObject:@"Test" forKey:@"Key"]; 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"Favourites.plist"]; 
[rootDict writeToFile:writablePath atomically: YES]; 
[rootDict release]; 
+0

嘿,好點。在模擬器上它可以讓你寫入主包,這就是我陷入陷阱的地方!感謝您的回答! – DexCurl 2011-02-27 18:27:27

18

不能元素添加到一個NSDictionary中,你需要使用的NSMutableDictionary然後使用setObject:forKey:方法。

[rootDict setObject:someObject forKey:@"someKey"]; 

NSMutableDictionary class reference

+0

這是否創建密鑰*** *** someKey即使能源部不存在呢? – DexCurl 2011-02-27 17:38:49

+2

它確實會添加密鑰,如果它不存在 - 除非您的對象是零,在這種情況下,它將嘗試刪除密鑰 – mmccomb 2011-02-27 17:47:10

+0

我已更新瞭解決錯誤的答案:) – mmccomb 2011-02-27 17:47:27