Написать массив в .plist - PullRequest
       2

Написать массив в .plist

0 голосов
/ 26 сентября 2011

У меня проблема.У меня есть этот файл словарь .plist:

<plist version="1.0">
<dict>
    <key>2</key>
    <array>
        <string>a</string>
        <string>b</string>
        <string>c</string>
    </array>
</dict>
</plist>

Так что теперь я читаю этот файл следующим образом:

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"dictionary" ofType:@"plist"];
    NSMutableDictionary *contentArray = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];

NSMutableArray *dic = [contentArray  objectForKey:@"2"];

    NSLog(@"Numero di elementi del dictionary corrispondente a 2: %i", [dic count]);

    for (int i = 0; i < [dic count]; ++i) {
        NSString *temp = [dic objectAtIndex:i];
        NSLog(@"Stringa = %@\n", temp);
    }

Теперь я хочу изменить массив:

[dic replaceObjectAtIndex:0 withObject:@"ok"];

и я хочу записать его в словарь dictionary.plist, и я пытаюсь это сделать:

[contentArray writeToFile:plistPath atomically:YES];

[contentArray release];

Но этот код не работает, и я получаю сообщение об ошибке, как я могу это сделать?

Спасибо

1 Ответ

0 голосов
/ 26 сентября 2011

Поскольку вы не указали ошибку, я предполагаю, что проблема может заключаться в том, что

NSMutableDictionary * contentArray = [NSMutableDictionary dictionaryWithContentsOfFile: plistPath];

создает только изменяемый контейнер (вы можете изменить содержимое contentArray, но не объекты (листья) внутриэтого.

Если вам нужны изменчивые листья, используйте вместо этого NSPropertyListSerialization:

NSMutableDictionary * contentArray = [NSPropertyListSerialization propertyListFromData: [NSData dataWithContentsOfFile: plistPath] mutabilityOption: NSPropertyListMutableContainersAndLeaves format: nil errorDescription: nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...