2013-05-28 3 views
0

У меня есть класс UITableViewController, и я хочу сохранить его информацию с помощью NSUserDefaults. Моя таблица создается с помощью массива под названием «задачи», которые являются объектами класса NSObject «Новая задача». Как и где я использую NSUserDefaults? Я знаю, что мне нужно добавить свой массив как объект NSUserDefaults, но как мне его восстановить? Любая помощь будет оценена по достоинству.Сохранить UITableViewController с NSUserDefaults

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *DoneCellIdentifier = @"DoneTaskCell"; 
    static NSString *NotDoneCellIdentifier = @"NotDoneTaskCell"; 
    NewTask* currentTask = [self.tasks objectAtIndex:indexPath.row]; 
    NSString *cellIdentifer = currentTask.done ? DoneCellIdentifier : NotDoneCellIdentifier; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer forIndexPath:indexPath]; 

    if(cell==nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifer]; 

    } 

    cell.textLabel.text = currentTask.name; 
    return cell; 
} 

Это мой метод viewdidload:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.tasks = [[NSMutableArray alloc]init]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:self.tasks forKey:@"TasksArray"]; 

}

ответ

1

Запись данных в пользовательских умолчанию делает:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:self.tasks forKey:@"TasksArray"]; 

// To be sure to persist changes you can call the synchronize method 
[userDefaults synchronize]; 

Получение данных от пользователя по умолчанию, выполнив:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
id tasks = [userDefaults objectForKey:@"TasksArray"]; 

Однако, вы можете только хранить объекты типа NSData, NSString, NSNumber, NSDate, NSArray или NSDictionary (массив и словарей может содержать объекты этого списка только). Если вам нужно сохранить какой-либо другой объект, вы можете использовать NSKeyedArchiver, чтобы преобразовать ваш объект в NSData, а затем сохранить его, и NSKeyedUnarchiver, чтобы пробудить ваш объект от данных.

+1

Не требуется вызвать 'synchronize' для сохранения изменений, так как она вызывается автоматически через определенные промежутки времени. Вам нужно будет только позвонить, если ваше приложение собирается выйти, и вы не могли дождаться. –

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