4

これを行うように言っているガイドや、このように NSUserDefaults の初期値とキーを設定すると、アプリが更新されたときに問題が発生すると言うガイドを見てきました。ここで明確に答えられることを願っています。私の appdelegate didFinishLaunchingWithOptions メソッドには、次のものがあります。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if (![defaults integerForKey:@"totalDays"]) {

        // if there is no value for the key, set it to 1
        [defaults setInteger:0 forKey:@"totalDays"];

    }
    if (![defaults objectForKey:@"currentDate"]) {
        [defaults setObject:@"32 01" forKey:@"currentDate"];
    }
    if (! [defaults boolForKey:@"marked"]) {
        [defaults setBool:NO forKey:@"marked"];

    }
    if (![defaults arrayForKey:@"checkedrows"]) {
        NSMutableArray *arr1  = [NSMutableArray arrayWithArray:[defaults arrayForKey:@"checkedrows"]];
    }
[defaults synchronize];
4

3 に答える 3

2

また、デフォルト値を使用するためにデフォルト値を「必要」としないことに注意することも役立つ場合があります。アプリの後半でnullまたはゼロの値をチェックする必要がなくなるため、時間を節約できる可能性があります。

他の答えが述べたように、値がユーザーのデフォルトに保存されると、それは更新から更新まで、そしてバックアップからバックアップまで持続するはずです。私は何年もの間それらを使用しており、データの損失や破損の問題はありません。

于 2012-12-19T14:20:24.300 に答える
1

デフォルト値をまったく設定しないでください。代わりに、まさにこの目的のために NSUserDefaults が提供する便利なメソッド -registerDefaults: を使用してください。デフォルト値の辞書を使用して、プログラムの起動の早い段階で呼び出します。

これの利点は、 -registerDefaults: が一時的なものであるため、「ユーザーがこの設定をカスタマイズしていない」と「ユーザーがこの設定を明示的にデフォルト値に設定した」の違いがわかることです。これは、デフォルトを変更する場合に重要です。プログラムの新しいバージョンの設定。また、ディスクに保存する必要がないため、少し高速です。

于 2012-12-29T18:22:07.017 に答える
1

ユーザーがアプリを更新すると、ユーザーのデフォルトに保存されたデータが保存されます。更新後にコードに問題が発生することはありません。

于 2012-12-19T14:17:19.957 に答える