2015-01-29 2 views
0

Я пытаюсь сохранить NSMutableArray, когда приложение отключится, а затем загрузите его при запуске в виде таблицы.NSCoding save NSMutableArray при выключении и загрузке при запуске

Вот мой код:

- (void)encodeWithCoder:(NSCoder *)encoder { 
[encoder encodeObject:_savedText forKey:@"savedText"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
if((self = [super initWithCoder:decoder])) { 
    _savedText = [decoder decodeObjectForKey:@"savedText"]; 
} 
return self; 
} 

Я использую этот код, чтобы сохранить MutableArray:

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_savedText]; 
    [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"savedText"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

И это, чтобы загрузить его:

- (void)viewDidLoad { 
    NSData *savedData = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedText"]; 
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:savedData]; 
    array = [_savedText copy]; 
} 

Там нет ошибок, но при запуске вид таблицы пуст. Я что-то забыл?

ответ

0

Вы должны прочитать данные по умолчанию и установить объект _savedText. Вы читаете данные в var с именем array, а затем назначаете array = [_savedText copy]. Это, вероятно, будет ноль. Это должно быть наоборот.

- (void)viewDidLoad { 
    NSData *savedData = [[NSUserDefaults standardUserDefaults] objectForKey:@"savedText"]; 
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:savedData]; 
    _savedText = [array copy]; 
} 
+0

Спасибо за ваш ответ, но теперь, когда я пытаюсь создать новую строку в представлении таблицы, приложение аварийно завершает работу. В чем причина? –

+0

Предоставить аварийные журналы –

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