Быстрый и грязный способ хранения NSStrings (или других данных) от запуска до запуска? - PullRequest
1 голос
/ 17 мая 2010

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

Что быстро и грязно хранить эти строки?

Я довольно новичок в разработке для iPhone. Я знаю о базовых данных, но не знаю, как их использовать. Я бы держался подальше от этого только для этого конкретного проекта, если это возможно. Возможны ли здесь файлы PLIST?

Пример кода приветствуется.

Ответы [ 3 ]

3 голосов
/ 17 мая 2010

Использовать NSUserDefaults . В этом вопросе есть код .

2 голосов
/ 17 мая 2010

Если вы хотите использовать списки, это самый быстрый способ (я думаю). Есть другие способы сделать это с NSCoding для кодирования ваших данных в файл, но вам, вероятно, понадобится специальный класс модели данных, это больше подходит для сохранения большего количества случайных вещей, которые не вписываются в предписанную модель данных. Кроме того, как было указано, NSUserDefaults также является опцией

Для сохранения вашей работы:

-(void)applicationWillTerminate:(NSNotification *)notification {
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   NSString *filePath = [documentsDirectory stringByAppendingString:@"info.plist"];
   NSMutableArray *array = [[NSMutableArray alloc] init];
// Add the objects you want to save to the array here ex: [array addObject:]
   [array writeToFile:filePath atomically:YES];
   [array release];  }

И чтобы восстановить сохраненный файл:

- (void)viewDidLoad {
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   NSString *filePath = [documentsDirectory stringByAppendingString:@"info.plist"];
   if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
       NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
    // Set your vaiables here in the order that you saved them ex. var = [array objectAtIndex:]
       [array release];
   }
   UIApplication *app = [UIApplication sharedApplication];
   [[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(applicationWillTerminate:) 
                                             name:UIApplicationWillTerminateNotification 
                                           object:app];

    [super viewDidLoad];}

По сути, когда ваше приложение собирается завершить работу, вы создаете и массив объектов, которые хотите сохранить и записываете их в файл, а когда ваше приложение запускается снова, вы читаете этот файл обратно в массив и назначаете свои переменные на основе порядок, в котором вы их сохранили. Затем вы настраиваете его так, чтобы, когда ваше приложение отправляло свое UIApplicationWillTerminateNotification, оно выполняло ваш код, чтобы сохранить ваши (предположительно) измененные переменные обратно в файл.

1 голос
/ 17 мая 2010

Вы, вероятно, хотите NSDefaults; Изучите руководство пользователя по умолчанию .

...