2017-07-17 3 views

Antwort

0

einfach, können Sie es auf diese Weise tun:

if let castedDict = dictionary as? [String: String] { 
    print("Converted successfully: \(castedDict)") 

} else { 
    print("Failed to cast the dictionary") 
} 
+0

Vielen Dank, aber CastedDict war Null. – LoveCode

+0

Dieses Casting schlägt fehl, wenn das Wörterbuch, das Sie zu übertragen versuchen, nicht in '[String: String]' umgewandelt werden kann. Ich habe meinen Code aktualisiert, um das deutlicher zu machen. –

+0

Vielen Dank für Ihre freundliche Hilfe. – LoveCode

2

Sie kein Wörterbuch direkt von [String: AnyObject] zu [String: String] umwandeln kann: da AnyObject verschiedene Arten von Werten in der gleichen dict halten kann, jeden solchen Wert Eintrag isn‘ t unbedingt konvertierbar zu String.

Stattdessen müssen Sie jedes Schlüssel/Wert-Paar durchgehen und eine Wertkonvertierung nach Möglichkeit in String durchführen. Zum Beispiel:

// (example) source dict 
let dict: [String: AnyObject] = ["foo": "1" as AnyObject, 
           "bar": 2 as AnyObject, 
           "baz": "3" as AnyObject] 

// target dict 
var targetDict = [String: String]() 
for (key, value) in dict { 
    if let value = value as? String { targetDict[key] = value } 
} // targetDict: ["foo": "1", "baz": "3"] 
Verwandte Themen