Ne peut pas convertir une valeur de type '[NSObject : AnyObject] " devrait argument de type '[Chaîne : AnyObject]'
Xcode7 et rapide, Mon code:
func loadDefaults() {
let settingBundle = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle")
if settingBundle == nil {
return
}
let root = NSDictionary(contentsOfFile: settingBundle!.stringByAppendingString("Root.plist"))
let prefrences = root?.objectForKey("PreferenceSpecifiers") as! Array<NSDictionary>
let defautlsToRegister = NSMutableDictionary(capacity: root!.count)
for prefrence in prefrences {
let key = prefrence.objectForKey("Key") as! String!
if key != nil {
defautlsToRegister.setValue(prefrence.objectForKey("DefaultVale"), forKey: key!)
}
}
NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [NSObject: AnyObject])
}
Problème de code:
NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [NSObject: AnyObject])
bâtiment avertissements
Ne peut pas convertir une valeur de type '[NSObject : AnyObject] " devrait argument de type '[Chaîne : AnyObject]'
changement de code:
NSUserDefaults.standardUserDefaults().registerDefaults(defautlsToRegister as [String: AnyObject])
bâtiment avertissements
'NSMutableDictionary" n'est pas convertible '[Chaîne : AnyObject]'
Merci de me dire comment faire? merci.
Merci de montrer un exemple de
N'utilisant
defautlsToRegister
typeN'utilisant
as!
de l'aide, comme il est suggéré dans stackoverflow.com/questions/24099165/...?
OriginalL'auteur Lifu Lin | 2015-09-21
Vous devez vous connecter pour publier un commentaire.
Votre
defautlsToRegister
doit être dans le format suivant[String: AnyObject]
Exemple: L'exemple suivant devrait fonctionner sans avertissement
vous êtes la plupart de bienvenue 🙂
OriginalL'auteur Shamsudheen TK
J'ai remarqué une chose simple à propos de cette erreur. Je ne sais pas si c'est le cas, mais la coulée
String to NSString
semble résoudre le problème pour moi. J'ai trouvé une explication quiAnyObject
est un alias de type pour représenter les instances de tout type de référence, qui est par exemple:NSString
. MaisString
est unstruct
donc il ne peut pas être le type de référence pourAnyObject
.Je vois deux manières de procéder:
Première:
let keyForMyKey: NSString = NSString(string: "mykey")
let result = dict.objectForKey(keyForMyKey) as? NSMutableArray
Deuxième:
let result = dict.objectForKey(NSString(string: "myKey")) as? NSMUtableArray
Plus sur le problème ici: http://drewag.me/posts/swift-s-weird-handling-of-basic-value-types-and-anyobject
OriginalL'auteur inokey
Pour moi, c'est travaillé.
Format(NSString méthode) va travailler dans ce scénario.
OriginalL'auteur Narasimha Nallamsetty