課題ごとにカスタム課題オブジェクトを使用する宿題アプリに取り組んでいます。NSMutableArray (initWithArray 経由で NSArray にキャスト) を 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 に関する一般的なヒントをいただければ幸いです。