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
3
A
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 NSDictionary
NSString
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
- 1. "Downcasting" C Strukturen in Swift
- 2. Downcasting in Swift mit as und as?
- 3. Downcasting in Qt
- 4. Downcasting Zeiger
- 5. Downcasting - Grundlagen
- 6. Subclassing Swift Generic Class mit NSObject Vererbung
- 7. Konvertieren von [NSObject, AnyObject] in [String, AnyObject] in Swift
- 8. So behandeln Sie launchOptions: [NSObject: AnyObject]? in Swift?
- 9. Überprüfen, ob [NSObject: AnyObject]! ist NSNull in Swift
- 10. Wie konvertiert man NSDictionary zu NSObject in Swift?
- 11. Wie füge ich dynamisches Verhalten in NSObject-Klasse hinzu: Swift
- 12. Aufruf von super.init() im Initialisierer der NSObject-Unterklasse in Swift
- 13. Convert NSObject in NSNumber
- 14. NSObject in NSDictionary konvertieren
- 15. Swift: '(NSObject, AnyObject)' hat kein Element mit dem Namen 'tiefgestellt'
- 16. MongoDb abstrakte Sammlung und Downcasting
- 17. Downcasting mit dynamic_cast gibt null
- 18. Konvertieren eines NSObject in NSData
- 19. Benutzerdefinierte NSObject in NSData konvertieren
- 20. Speichern benutzerdefinierte NSObject in NSUserDefaults
- 21. 'Set' <NSObject> kein Mitglied hat
- 22. NSProxy vs NSObject
- 23. NSObject unterstützt nicht encodeWithCoder?
- 24. Warum in Swift können wir ein Protokoll ohne Vererbung eine Klasse von NSObject nicht übernehmen?
- 25. CLLocationManager nicht Delegat in einem NSObject aufrufen
- 26. NSObject Beschreibung und benutzerdefinierte Zusammenfassungen in Xcode
- 27. NSObject Release ... Immer noch in ObjectAlloc
- 28. '(NSObject, AnyObject)' ist nicht in 'String' konvertierbar
- 29. Soll Downcasting bei Verwendung einer Klassenhierarchie in C++ vermieden werden?
- 30. Casting String zu [NSObject: AnyObject]