редактирование файла в цели c - PullRequest
0 голосов
/ 22 апреля 2011

мне нужен файл с такой структурой:

  • elementName -> значение
  • elementName -> значение
  • elementName -> значение

, поэтому я буду использовать файл .plist. Иногда я хочу изменить значение одного из трех элементов, могу ли я это сделать? Или я должен прочитать весь файл и переписать?

приветствуется любое другое решение.

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Полагаю, что прочитать файл полностью, а затем записать его обратно будет проще всего.

Пример использования словаря:

NSDictionary *myDictionary;
NSMutableDictionary *mutableDict;
NSString *filePath;
NSNumber *numApplicationLaunches;
int intValue;

filePath = @"/your/path/here.plist";

/* Read in and make mutable copy */
myDictionary = [[NSDictionary alloc] initWithContentsOfFile:filePath];
mutableDict = [myDictionary mutableCopy];
[myDictionary release];

/* Edit necessary */
numApplicationLaunches = [mutableDict objectForKey:@"NumAppLaunch"];
intValue = [numApplicationLaunches intValue];
intValue++;
numApplicationLaunches = [NSNumber numberWithInt:intValue];
[mutableDict setObject:numApplicationLaunches forKey:@"NumAppLaunch"];

/* Write To file */
[mutableDict writeToFile:filePath atomically:YES];
[mutableDict release];

Надеюсь, это поможет,
ief2

1 голос
/ 22 апреля 2011

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

При сохранении его также необходимо переписать.

0 голосов
/ 28 июля 2013

Есть более простой способ:

NSString *path =  [[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSError *error = nil;
NSMutableArray *items = [NSPropertyListSerialization propertyListWithData:data
                                                       options:NSPropertyListMutableContainersAndLeaves
                                                        format:nil
                                                         error:&error];

Конечно, в зависимости от вашего списка, вы можете получить что-то, кроме NSArray.Отрегулируйте при необходимости.

Все объекты (на всех глубинах) в массиве будут изменяемыми.Выполните итерацию / редактирование по своему усмотрению, а затем запишите его обратно в соответствии с предложением Анри.

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