iOS 10, NSUserDefaults ne fonctionne pas

J'essaie d'écrire / lire des valeurs de / vers [NSUserDefaults standardUserDefaults] , mais cela ne semble pas fonctionner. Mon code est:

 [[NSUserDefaults standardUserDefaults] setObject:@"sampleSsortingng" forKey:@"sampleKey"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSSsortingng *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"]; return defaultsValue; 

Ce code renvoie nil , pour le simulateur Xcode 8.0 beta et iPhone 6s (10.0). Cependant, il renvoie sampleSsortingng pour Xcode 8.0 bêta et iPhone 6s (9.1) simulateur

Je suis en train de tester mon application avec les nouveaux systèmes. Est-ce que je fais quelque chose de mal? Ou y a-t-il une solution de rechange pour cela? Ou est-ce juste un problème "bêta"?

J'ai juste eu le même problème. Il semble y avoir un problème avec NSUserDefaults lors de la première exécution du simulateur iOS8 ou 9, puis le simulateur iOS10. Redémarrer le mac a résolu le problème pour moi.

C'était un bug avec le simulateur iOS livré avec Xcode 8 Beta 1. Il a été corrigé dans la version bêta 2:

Résolu dans Xcode 8 beta 2 – IDE

Simulateur

  • NSUserDefaults fonctionne correctement dans le simulateur iOS 10, que vous ayez précédemment démarré le simulateur iOS 8 ou iOS 9. (25974372)

Notes de mise à jour de Xcode 8 Beta 2

Mettez à jour vers Xcode 8 Bêta 2 pour éviter d'avoir à redémarrer votre Mac hôte à chaque fois.

Mettre à jour:

Si la protection des données est activée, synchronize peut également échouer lorsqu'une application passe en arrière-plan.


Nous avons ce problème sur un périphérique réel exécutant iOS 10.1.1. L'ancienne valeur peut être lue, mais les nouveaux changements ne peuvent pas être sauvegardés sur le disque, la méthode de synchronize échoue toujours.

Redémarrez le périphérique peut résoudre ce problème.

J'ai juste eu le même problème. Il semble y avoir un problème avec NSUserDefaults lors de la première exécution du simulateur iOS8 ou 9, puis le simulateur iOS10. Redémarrer le mac a résolu le problème pour moi. shareeditflag Confirmé. La fermeture et la réouverture du simulateur n'ont pas fonctionné, mais le redémarrage l'a corrigé pour moi.

Selon Apple ( lien Apple) WWDC Seed: L'exécution de plusieurs simulateurs iOS peut entraîner le dysfonctionnement de NSUserDefaults L'exécution d'un simulateur iOS 8 ou 9 suivi d'un simulateur iOS 10 entraîne l'arrêt du fonctionnement de NSUserDefaults dans le simulateur. Cela peut être travaillé en redémarrant le Mac hôte.