Я работаю над приложением для домашних заданий, которое использует настраиваемые объекты Assignment для каждого задания. Я пытаюсь сохранить NSMutableArray (переданный в NSArray через initWithArray :) в standardUserDefaults, но у меня возникают проблемы с сохранением и перезагрузкой массива.
У меня есть табличное представление, из которого вы можете добавить новое назначение (которое загружает NewAssignmentViewController). Когда вы сохраняете назначение, оно возвращается в массив в AssigmentsViewController. И затем вы вызываете его каждый раз, когда загружаете UITableView, который показывает назначения.
Вот соответствующий код:
-(void)saveToUserDefaults:(NSArray*)myArray{
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:myArray] forKey:@"Assignments"];
[standardUserDefaults synchronize];
}
}
-(void)retrieveFromUserDefaults{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"Assignments"];
if (dataRepresentingSavedArray != nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if ([oldSavedArray count] != 0) {
[assignments setArray:[[NSMutableArray alloc] initWithArray:oldSavedArray]];
}
else {
assignments = [[NSMutableArray alloc] initWithCapacity:100];
}
}
}
-(void)backButtonPressed {
[self saveToUserDefaults:[[NSArray alloc] initWithArray:assignments]];
[self.navigationController popViewControllerAnimated:YES];
}
Пожалуйста помоги. Он не загружает массив, но не выдает ошибок. Будем признательны за любые советы по UserDefault или KeyedArchiver в целом.