Сохранение табличного представления в Xcode - PullRequest
0 голосов
/ 02 мая 2011

Здравствуйте. Мне нужна помощь в выяснении того, как сохранить новые конфигурации, которые "ПОЛЬЗОВАТЕЛЬ" выполняет в табличном представлении.

Я немного знаком с тем, как это делается "в AppDelegate.h и .m", но дело в том, что я использую приложение на основе навигации, и оно дает вам делегат и ViewController.

Как мне запрограммировать его на сохранение нового табличного представления, когда человек переключается на новое представление.Есть ли способ, которым не нужно делать это через AppDelegate?

Спасибо

1 Ответ

2 голосов
/ 02 мая 2011

Наилучшим способом было бы сохранение источника данных tableView в файл .plist в каталоге документов. Затем в вашем методе viewWillAppear установите источник данных tableView в файл .plist (если он доступен).

Источником данных обычно является NSDictionary / Mutable или NSArray / Mutable. У них обоих есть метод записи в каталог документов, который можно получить так:

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

Метод записи одного из перечисленных в каталог документов будет выглядеть так:

BOOL saved = [datasource writeToPath:[documentsDirectory stringByAppendingPathComponent:@"savedDatasource.plist"] atomically:YES];

if (saved) {
//saved datasource to .plist file.
}
else if (!saved) {
//did not save;
}

Чтобы загрузить список из каталога документов, вам сначала нужно проверить, есть ли он:

if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirectory stringByAppendingPathComponent:@"savedDatasource.plist"]]) {
         countryMArray = [[NSMutableArray alloc] initWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"savedDatasource.plist"]];
 }
 else {
     //it is not there, we need to write it to the documents directory
     [datasource writeToPath:[documentsDirectory stringByAppendingPathComponent:@"savedDatasource.plist"] atomically:YES];
 }

Удачи!

...