我正在开发一个家庭作业应用程序,该应用程序为每个作业使用自定义分配对象。我正在尝试在standardUserDefaults 中存储一个NSMutableArray(通过initWithArray 转换为NSArray :),但我在保存和重新加载数组时遇到了麻烦。
我有一个表格视图,您可以从中选择添加新分配(加载 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 的提示将不胜感激。