長い話ですが、現在、viewDidLoad でこのコードを使用して、保存された値を復元し (NSUserDefaults を使用)、アプリを初めて実行するかどうかを確認しています。電話を再起動するか、マルチタスクからアプリを削除して NSUserDefaults をテストするまで、すべて正常に動作します。基本的に、アプリはフリーズしてクラッシュし、何もできません。そこにないかもしれない価値観を思い出すことと関係があると感じています。
NSDictionary *defaultsDict =
[[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"FirstLaunch", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];
NSUserDefaults *sharedDefaults = [NSUserDefaults standardUserDefaults];
if ([sharedDefaults boolForKey:@"FirstLaunch"]) {
NSLog(@"first launch");
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[nameView removeFromSuperview];
[amountView removeFromSuperview];
[self.view addSubview:firstView];
[initialText becomeFirstResponder];
[sharedDefaults setBool:NO forKey:@"FirstLaunch"];
[sharedDefaults synchronize];
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSObject * object = [defaults objectForKey:@"budgetLabel"];
if(object != nil){
NSString *budgetSaved = [defaults objectForKey:@"budgetLabel"];
NSArray *namesSaved = [defaults objectForKey:@"nameArray"];
NSArray *pricesSaved = [defaults objectForKey:@"priceArray"];
budgetLabel.text = budgetSaved;
[nameArray addObjectsFromArray:namesSaved];
[priceArray addObjectsFromArray:pricesSaved];
} else {
}
どんな助けでも大歓迎です!
編集
これは、データを保存するために使用するコードです。
- (void)saveData {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:budgetLabel.text forKey:@"budgetLabel"];
[defaults setObject:nameArray forKey:@"nameArray"];
[defaults setObject:priceArray forKey:@"priceArray"];
[defaults synchronize];
}