0

おはようございます。いくつかのオブジェクトを配列に保存するIBActionメソッドを作成しました。

-(IBAction)saveToFav:(id)sender
{
    NSUserDefaults *newDefaults = [NSUserDefaults standardUserDefaults];
    favorites = [[NSMutableArray alloc]initWithArray:[newDefaults mutableArrayValueForKey:@"favorites"] copyItems:YES];

    // check if array already contains an object

    if (![favorites containsObject:self.title])
    {
        [favorites addObject:self.title];
    }
    [newDefaults setObject:favorites forKey:@"favorites"];
}

ただし、このメソッドを呼び出すと、アプリがエラーでクラッシュします。

[NSKeyValueSlowMutableArray getObjects:range:]:オブジェクト0x8939030の主要なお気に入りの値はnilです。

なぜこれが起こるのですか?ありがとう!

マックス

4

4 に答える 4

2

データ (お気に入り) がデフォルトに書き込まれていないようです。これを実行すると、デフォルトを強制的に保存できます。

[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-04-22T06:34:40.193 に答える
1

newDefaultsは、キー「お気に入り」に対してnilです。

于 2012-04-22T06:14:59.530 に答える
1

この行で

favorites = [[NSMutableArray alloc]initWithArray:[newDefaults mutableArrayValueForKey:@"favorites"] copyItems:YES];

nilに割り当てられていfavoritesます。これはnewDefaults、前の行に基づいて作成されたばかりで空であるためです。

于 2012-04-22T06:25:13.663 に答える
1

アプリの読み込みが完了したら、次を追加します。

NSMutableArray *array = [[NSMutableArray alloc]init]; 
[defaults setObject:array forKey:@"favorites"]; 
[defaults synchronize];
于 2012-04-22T06:50:59.263 に答える