[NSUserDefaults standardUserDefaults]
との間で値の書き込み/読み取りを試みましたが、機能しないようです。私のコードは:
[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;
このコードは、Xcode 8.0ベータおよびiPhone 6s(10.0)シミュレータの場合、nil
を返します。ただし、Xcode 8.0ベータ版およびiPhone 6s(9.1)シミュレータの場合はsampleString
を返します
新しいシステムでアプリをテストしています。私は何か間違ったことをしていますか?それとも回避策はありますか?それとも単なる「ベータ版」の問題ですか?
私は同じ問題を抱えていました。最初にiOS8または9シミュレータを実行し、次にiOS10シミュレータを実行すると、NSUserDefaults
に問題があるようです。 Macを再起動すると問題が解決しました。
これは、Xcode 8 Beta 1に付属するiOSシミュレータのバグでした。Beta2で修正されました。
Xcode 8ベータ2で解決– IDE
シミュレーター
- NSUserDefaultsは、以前にiOS 8またはiOS 9シミュレーターを起動したことがあるかどうかに関係なく、iOS 10シミュレーターで正しく機能します。 (25974372)
Xcode 8 Beta 2にアップデートすると、毎回ホストMacを再起動する必要がなくなります。
更新:
データ保護が有効になっている場合、アプリケーションがバックグラウンドに入るときにsynchronize
も失敗する可能性があります。
実際のデバイス iOS 10.1.1を実行しているときにこの問題が発生します。古い値を読み取ることができましたが、新しい変更をディスクに保存できません。synchronize
メソッドは常に失敗します。
デバイスを再起動すると、この問題が解決する場合があります。
私は同じ問題を抱えていました。 iOS8または9シミュレータを最初に実行し、次にiOS10シミュレータを実行すると、NSUserDefaultsに問題があるようです。 Macを再起動すると問題が解決しました。 shareeditflag確認済み。シミュレーターを閉じて再度開くことはできませんでしたが、再起動すると修正されました。
Apple( Apple link )のように、WWDCシード:複数のiOSシミュレーターを実行すると、NSUserDefaultsが機能しなくなる可能性がありますiOS 8または9シミュレーターを実行してから、iOS 10シミュレーターを実行するとNSUserDefaultsがシミュレータでの動作を停止するこれは、ホストMacを再起動することで回避できます。