2016-08-30 7 views
0

私はNSUserDefaultsに奇妙な問題があります。Objective-C NSUserDefaultsは特定のキーのNSMutableArrayを保存しません

私はNSMutableArrayを保存したいと思います。

私は、コードのこの部分を持っている:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[userDefaults setObject:selected forKey:@"markListArr"]; 

問題はキー「markListArr」のためのオブジェクトは保存されませんということです。 私はアプリの最初の実行時にこれを行います。 アプリケーションの後半で、そのキーのオブジェクトを保存したいときは、すべて正常に動作します。

他のキーを使用するとすべて正常に動作します。その特定のキーを使用したいのですが、私はすでにアプリストアにアプリを持っています。これは既存のアプリへのアップデートだけです。

私は既に[userDefaults synchronize]を試しましたが、うまくいきません。

何が起こっているのですか?

+0

をあなたはそれが保存されていないとはどういう意味ですか?ブレークポイントを設定しましたか?任意の情報をログアウトしますか?選択されていますか? – Tim

+0

どのように配列を取得しますか?ユーザーのデフォルトで 'arrayForKey:'を呼び出す必要があります。 – ozgur

+0

[NSArrayをNSUserDefaultsに保存してNSMutableArrayに保存する]の可能な複製(http://stackoverflow.com/questions/9212430/saving-nsarray-to-nsuserdefaults-and-getting-it-in-nsmutablearray) – Aviram

答えて

0

オブジェクトを取得する前に[userDefaults synchronize]に電話していますか?私は以下のコード使用しています:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray *selected = [[NSMutableArray alloc] init]; 
[selected addObject:@"New Value"]; 
[userDefaults setObject:selected forKey:@"markListArr"]; 
[userDefaults synchronize]; 

NSMutableArray *arr = [userDefaults objectForKey:@"markListArr"]; 
NSLog(@"arr: %@", arr); 

をし、それが印刷さ:

arr: (
    "New Value" 
) 
+0

はい私はそれを正確にしています。私は要求の完了ブロックにこのコードを持っています。問題は、ユーザーのデフォルトで3つの異なるものを保存し、この特定のキーのみが機能しないことです。他のすべてのキーは正常に動作します。 – Matic1911

+0

NSLog(@ "%@"、[[NSUserDefaults standardUserDefaults] dictionaryRepresentation])でデバッグしました。問題はキーと配列が保存されないということです。 – Matic1911

+0

可変配列NSStringsのすべてのキーはありますか? NSCodingに準拠していない場合は、可変配列を保存する際に問題が発生することがあります。もしあなたがまだ試していないなら、この投稿は役に立ちますか? http://stackoverflow.com/a/471920/2845237 –

関連する問題