2016-07-15 22 views
3

Ich lerne Swift und versuche etwas über Downcasting zu verstehen. NSDictionary wird in Swift als [NSObject: AnyObject] dargestellt. Soweit ich das beurteilen kann, kann dies auf spezifischere Typen reduziert werden (z.B. [Int: String]). Ich verstehe, dass NSObject die Basisklasse ist, wenn wir über Objective-C sprechen, aber wie kann es sein, dass es in Swift in einen String oder Integer umgewandelt werden kann? Es war mein Verständnis, dass Swift native Typen keine Unterklassen von NSObject sind.Downcasting NSObject in Swift

Antwort

5

Gute Frage! Was tatsächlich passiert, ist ein bisschen Magie in der Interaktion zwischen Objective-C und Swift, um Ihr Leben einfacher zu machen: Sie können zum Beispiel auf [String: Int] downcast, wenn Ihr Original NSDictionaryNSString s und NSNumber s enthält. Während NSString und NSNumber sind in der Tat verschiedene Arten als String und Int, gibt es eine so offensichtliche Korrelation, dass Apple beschlossen, die Konvertierung für Sie zu tun. Mit anderen Worten, es funktioniert aus dem gleichen Grund, aus dem das funktioniert:

let object = NSNumber(value: 4) 
let swiftVersion = object as Int 
Verwandte Themen