переписывать вместо записи в плист-какао - PullRequest
0 голосов
/ 03 февраля 2011

Я создал метод для записи данных в plist.

- (void)writeToPListUserType:(NSString *)type 
                   andUserID:(NSString *)usid 
                andFirstName:(NSString *)fname 
                 andLastName:(NSString *)lname 
                 andPassword:(NSString *)pwd{

    NSMutableDictionary *userDetails = [[NSMutableDictionary alloc] init];
    [userDetails setObject:fname forKey:@"firstName"];
    [userDetails setObject:lname forKey:@"lastName"];
    [userDetails setObject:pwd forKey:@"password"];

    NSMutableDictionary *userIDKey = [[NSMutableDictionary alloc] init];
    [userIDKey setObject:userDetails forKey:usid];

    [userCredentials setObject:userIDKey forKey:type];
    [userIDKey release];
    [userDetails release];

    NSString *error;

    NSString *rootPath = [NSSearchPathForDirectoriesInDomains
                 (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *plistPath = [rootPath stringByAppendingPathComponent:
                                                     @"userCredentials.plist"];

    NSData *plistData = [NSPropertyListSerialization
                                           dataFromPropertyList:userCredentials
                                            format:NSPropertyListXMLFormat_v1_0
                                                      errorDescription:&error];

    [plistData writeToFile:plistPath atomically:YES];
}

Я могу записать новые данные в список. Однако когда записываются новые данные, старых данных больше нет. Другими словами, метод переписывает мой plist.
Подскажите пожалуйста что не так с методом ...: (

Заранее спасибо ...

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

С этой строкой:

code>[userCredentials setObject:userIDKey forKey:type];

вы перезаписываете существующий ключ типа "userCredentials" (я не вижу, что он был вновь выделен в методе) новымdata.

Таким образом, userCredentials, который, как я полагаю, является изменяемым словарем, созданным в другом месте, перезаписывается новыми данными.

1 голос
/ 03 февраля 2011

1) считывание списка с диска

2) создание изменяемой копии в памяти

3) изменение (в памяти) списка

4) перезапись файлавы читаете, используя в памяти plist

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...