-1

長い話ですが、現在、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];
}
4

2 に答える 2

0

解決しました!

次のコードで問題を解決しました。

nameArray = [[defaults mutableArrayValueForKey:@"nameArray1"] mutableCopy];
priceArray = [[defaults mutableArrayValueForKey:@"priceArray1"] mutableCopy];

みんな助けてくれてありがとう!

于 2013-03-01T03:04:01.397 に答える
0
NSArray *namesSaved = [defaults objectForKey:@"nameArray"];

これを使用すると、可変でない配列を取得してから

[nameArray addObjectsFromArray:namesSaved];

mutableArray に追加しています。

そのため、クラッシュが発生します。

于 2013-02-28T09:15:26.347 に答える