2017-06-07 1 views
0

Comment réparer exception:Exception lors de la configuration NSDictionary à UserDefaults

[User Defaults] Attempt to set a non-property-list object { 
4 = 5; 
} as an NSUserDefaults/CFPreferences value for key MyKey 

lancé en exécutant le code suivant (Swift 3)

let ns = NSDictionary(dictionary: [4: 5]) 
UserDefaults.standard.set(ns, forKey: "MyKey") 
code

Savès ci-dessus correctement le type String, mais il a un problème NSDictionary

+1

Cochez cette question: https://stackoverflow.com/questions/37825630/save-dictionary-in-userdefaults-in-swift-3-with-xcode-8 –

Répondre

1

Toutes les clés de la liste des biens doivent être String.

De l'documentation

Et bien que NSDictionary et CFDictionary objets permettent à leurs clés pour être des objets de tout type, si les clés ne sont pas des objets de chaîne, les collections ne sont pas la propriété liste des objets.

let ns = ["4": 5] 
UserDefaults.standard.set(ns, forKey: "MyKey") 

Pas besoin d'utiliser NSDictionary, Swift Dictionary fonctionne de la même manière et est implicitement pontées.

0

Votre dictionnaire doit avoir des chaînes comme clés pour que vous puissiez l'enregistrer dans UserDefaults

cela fonctionne pour moi:

let ns = NSDictionary(dictionary: ["4": 5]) 
UserDefaults.standard.set(ns, forKey: "MyKey")