Ich habe bereits ein Update auf XCode 8 durchgeführt und muss jetzt meinen Code von Swift 2 nach Swift 3 konvertieren.
Bevor ich NSDictionary
in Dictionary
konvertieren wollte, habe ich gerade folgendes geschrieben:
let post_paramsValue = post_params as? Dictionary<String,AnyObject?>
wobei post_params
NSDictionary
ist.
Aber jetzt mit Swift 3 erhalte ich diesen Fehler:
NSDictionary is not convertible to Dictionary
Warum? Was hat sich geändert?
Ich habe auch folgendes ausprobiert:
let post_paramsValue = post_params as Dictionary<String,Any>
Aber das gibt diesen Fehler:
Ich habe auch folgendes ausprobiert:
let post_paramsValue = post_params as Dictionary<String,Any>
Wo ich NSDictionary
anstelle von NSDictionary!
deklariere, aber es funktioniert nicht; Ich habe diesen Fehler erhalten:
Ich habe auch folgendes ausprobiert:
let post_paramsValue = post_params as Dictionary<String,Any>!
Aber ich habe diesen Fehler erhalten:
NSDictionary
in Objective-C hat immer nicht optionale Werte.AnyObject
wurde in Swift 3 Any
.NSDictionary
in Dictionary
übergegossen werden.let post_paramsValue = post_params as Dictionary<String,Any>
Wenn die Quelle NSDictionary
optional ist, können Sie as Dictionary<String,Any>?
oder as? Dictionary<String,Any>
oder as! Dictionary<String,Any>
oder as Dictionary<String,Any>!
verwenden, abhängig vom tatsächlichen Typ der NSDictionary
Für diejenigen, die ein Problem mit NSDictionary
haben, verwenden Sie einfach diese Erweiterung:
extension NSDictionary {
var swiftDictionary: Dictionary<String, Any> {
var swiftDictionary = Dictionary<String, Any>()
for key : Any in self.allKeys {
let stringKey = key as! String
if let keyValue = self.value(forKey: stringKey){
swiftDictionary[stringKey] = keyValue
}
}
return swiftDictionary
}
}