将密钥添加到NSDictionary(iPhone SDK)

将密钥添加到NSDictionary(iPhone SDK),iphone,objective-c,sdk,nsdictionary,Iphone,Objective C,Sdk,Nsdictionary,非常快速地尝试向.plist添加密钥。我差不多有了,第四行的正确版本是什么 NSString *path = [[NSBundle mainBundle] pathForResource:@"Favourites" ofType:@"plist"]; NSDictionary *rootDict = [[NSDictionary alloc] initWithContentsOfFile:path]; [rootDict addKe

非常快速地尝试向.plist添加密钥。我差不多有了,第四行的正确版本是什么

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

不能将元素添加到NSDictionary,需要使用NSMutableDictionary,然后使用
setObject:forKey:
方法

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

差不多了

不是真的

你不能更改词典。您无法向主捆绑包写入数据


工作代码:

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];

这是否会创建密钥someKey,即使它不存在?如果它不存在,它确实会添加密钥-除非你的对象为nil,在这种情况下,它会尝试删除密钥谢谢你,做了一个梦:)使用
setValue:forKey:
,尽管是@fluchtpunkt建议的!嘿,说得好。在模拟器上,它可以让你写入主包,这就是我掉进陷阱的地方!谢谢你的回答!