Добавить ключ к NSDictionary (iPhone SDK) - PullRequest
5 голосов
/ 27 февраля 2011

Эй, ребята, очень быстро пытаюсь добавить ключ в .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];

Ответы [ 2 ]

19 голосов
/ 27 февраля 2011

Вы не можете добавлять элементы в NSDictionary, вам нужно использовать NSMutableDictionary, а затем использовать метод setObject:forKey:.

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

См. Ссылка на класс NSMutableDictionary

12 голосов
/ 27 февраля 2011

почти есть

не совсем.

Вы не можете изменить 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];
...