NSArray, UITableView - PullRequest
       8

NSArray, UITableView

0 голосов
/ 24 декабря 2009

Если я хочу, чтобы пользователь мог редактировать записи в таблице с числовыми данными (пользователь нажимал на ячейку таблицы, затем в этом дочернем представлении он вводил число и возвращался обратно в основную таблицу). view), я думал, что просто добавлю записи в NSMutabaleArray. Если так, когда пользователь покидает приложение, эти значения все еще там? Если они есть, мне просто нужно иметь метод таблицы, который освобождает массив? Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 декабря 2009

Данные вашего приложения не сохраняются автоматически.

Если у вас небольшой объем данных, вы можете записать коллекцию, такую ​​как массив, в файл Список свойств (plist) в каталоге документов вашего приложения.

Если у вас большой объем данных, я бы рекомендовал использовать Core Data.

0 голосов
/ 24 декабря 2009

Быстрый и грязный способ - использовать NSKeyedArchiver для записи NSArray в файл. Затем вам нужно будет прочитать данные из файла обратно в NSArray при запуске приложения.

Вот фрагмент:

Получает путь к документу:

- (NSString*)pathForDataFile
{
    //Get the path of the Documents directory
    NSArray* paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
    NSString* documentsDirectory = [paths objectAtIndex: 0]; //Path to the documents directory

    //Get the path to my file in /Documents  
    NSString* documentsPath = [documentsDirectory stringByAppendingPathComponent: 
                               [NSString stringWithFormat: @"%@.plist", @"FileName"]];

    return documentsPath;
}

Это сохранит и загрузит:

- (BOOL)saveDataToDisk
{
    NSString* path = [self pathForDataFile];

    NSMutableDictionary* rootObject = [NSMutableDictionary dictionary];

    if ( self.yourArray )
        [rootObject setValue: self.powerListCollection.items forKey: kYourKey];

    [NSKeyedArchiver archiveRootObject: rootObject toFile: path];

    return YES;
}

-

- (BOOL)loadDataFromDisk
{
    NSString* path = [self pathForDataFile];
    NSFileManager* manager = [NSFileManager defaultManager];

    if ( [manager fileExistsAtPath: path] )
    {
        NSLog( @"Saved data found, loading data from %@", path );

        NSMutableDictionary* rootObject = nil;
        rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile: path]; 

        NSArray* self.yourArray = [rootObject objectForKey: kYourKey];

    }
    else
    {
        NSLog( @"No saved data, initializing objects with default values." );
    }

    return YES;
}

Обратите внимание, что вам нужно сохранить все, что вы получите от objectForKey:

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