2010-11-05 4 views
0

Приветствую вас, я начинаю и извините за простые вопросы.Как добавить новую строку в plist

Как добавить новые строки в "" plist "" для сохранения данных и доступа к ним в нем.

NSArray *values = [[NSArray alloc] initWithObjects:@"Hello",nil]; 
[values writeToFile:[self PathArray] atomically:YES]; 

потому что этот метод только перезаписывает значения в ([self PathArray]) «путь»;

Благодаря

ответ

2

Plist файлы не предназначены для дополнительных обновлений, вместо этого вы должны загрузить содержимое Plist в памяти, добавить элемент к нему и сохранить обратно:

NSMutableArray *oldValues = [NSMutableArray arrayWithContentsOfFile:[self PathArray]]; 
NSArray *values = [[NSArray alloc] initWithObjects:@"Hello",nil]; 
[oldValues addObjectsFromArray:values];  
[oldValues writeToFile:[self PathArray] atomically:YES]; 
[values release]; // Do not forget this line to avoid memory leak 
+0

привет, я знаю, что это был ответ почти в течение года. Я пробовал этот метод, и он не работает. он не пишет в plist. или он даже записывает его в plist навсегда? –

+0

@MelvinLai, он должен работать. Две возможные проблемы: вы пытаетесь записать недопустимый путь (или где у вас нет прав на запись), или ваш массив содержит объекты, не содержащие plist (объекты plist - это NSString, NSArray, NSDictionary, NSNumber ...) – Vladimir

+0

путь правильный, я могу прочитать plist успешно, но не могу писать на нем. в отношении разрешений, где я его устанавливаю? при получении информации при нажатии правой кнопкой мыши? и я использую nsstring для записи в plist, есть ли способ проверить, успешно ли обновлен plist? –

0

В моем пункте, словарные данные включает в себя нуль, например:

{ 
"category_id" = 29; 
    "category_name" = "\U5f69\U6f2b"; 
    coverurl = "<null>"; 
    position = 29; 
} 

так writetofile, возвращаемое значение всегда FALSE.

Смежные вопросы