Ich steckte durch die Frage in swift. Angenommen, ich habe ein Objekt, wie kann ich in swift überprüfen, ob es von struct oder class stammt?Wie zu überprüfen Objekt gehören zu Klasse oder Struktur in Swift
Antwort
Es gibt is
Operator.
if someInstance is SomeType {
// do something
}
Und es gibt as?
Operator.
Sie können dies durch unten angegebenen Weg und for more information on this please follow this link.
class Shape {
class func className() -> String {
return "Shape"
}
}
class Square: Shape {
override class func className() -> String {
return "Square"
}
}
class Circle: Shape {
override class func className() -> String {
return "Circle"
}
}
func getShape() -> Shape {
return Square() // hardcoded for example
}
let newShape: Shape = getShape()
newShape is Square // true
newShape is Circle // false
newShape.dynamicType.className() // "Square"
newShape.dynamicType.className() == Square.className()
Ein einfaches Beispiel hierfür:
var name = "Big Hero"
if name.isKindOfClass(NSString){
println("this is this class")
}else{
println("this is not this class")
}
In Swift 3.0 können Sie Mirror(reflecting:x).displayStyle
nennen, wo x
Ihr Wert von Interesse ist. Das Ergebnis wird class
, struct
, enum
, dictionary
, set
... sehen sein, die Dokumentation https://developer.apple.com/reference/swift/mirror.displaystyle
Codebeispiel:
struct SomeStruct {
var name: String
init(name: String) {
self.name = name
}
}
var astruct = SomeStruct(name:"myname")
Mirror(reflecting:astruct).displayStyle == .struct // will be true
Mirror(reflecting:astruct).displayStyle == .class; // will be false
class MyClass {
var name:String
init(name: String) {
self.name=name
}
}
var aclass = MyClass(name:"fsdfd")
Mirror(reflecting:aclass).displayStyle == .struct // will be false
Mirror(reflecting:aclass).displayStyle == .class // will be true
Natürlich wäre es in der Praxis eine switch-case-Anweisung am besten behandelt wird unter Verwendung von .
Dieser Ansatz wurde für mich in Swift Arbeits 3:
class TestClass { }
struct TestStruct { }
var mystery:Any
mystery = TestClass()
// Is mystery instance a class type?
print(type(of:mystery) is AnyClass ? "YES" : "NO") // prints: "YES"
mystery = TestStruct()
// Is mystery instance a class type?
print(type(of:mystery) is AnyClass ? "YES" : "NO") // prints: "NO"
Beachten Sie, dass dieser Ansatz Ihnen sagt, nur wenn eine Instanz einer Klasse-Typ ist oder nicht. Die Tatsache, dass es nicht eine Klasse ist, bedeutet nicht unbedingt, dass es eine Struktur ist (könnte eine Enum, Schließung, Tupel, etc.) Aber für die meisten Zwecke und Kontexte ist dies genug zu wissen, ob Sie mit einem Referenztyp oder beschäftigen ein Werttyp, der normalerweise benötigt wird.
Nur wenn Sie wissen, dass es keine Schließung ist, weil sie auch Referenztypen sind. – Binarian
In swift4, Prüfen Klasse oder Struktur
class TClass {}
struct TStruct {}
func who(_ any: Any) -> String {
if Mirror(reflecting: any).displayStyle == .class {
return "Class"
} else {
return "Struct"
}
}
print(who("Hello")) // Struct
print(who(TClass())) // Class
print(who(TStruct())) // Struct
print(who(1)) // Struct
- 1. Kann ein Objekt zu zwei Klassen gehören?
- 2. Swift Constants Datei - Klasse oder Struktur?
- 3. Zu welcher Klasse soll der Konvertierungscode gehören?
- 4. Wie überprüfen Sie Objekt ist Null oder nicht in Swift?
- 5. Zurück zu ursprünglichen JSON-Struktur in Swift
- 6. Swift: Sollte ViewModel eine Struktur oder Klasse sein?
- 7. Ziel C-Klasse oder Struktur?
- 8. Wrapper-Typ in .NET: Struktur oder Klasse?
- 9. Wie man eine Struktur zu AnyObject in Swift 2 wirft?
- 10. Java - einfache Möglichkeit, die Struktur eines serialisierten Objekts zu überprüfen?
- 11. Speicher benutzerdefiniertes Objekt zu NSUserDefaults in Swift
- 12. Ist Datetime-Struktur oder -Klasse in C#?
- 13. Swift: Protokoll vs. Struktur vs. Klasse
- 14. Um zu überprüfen, ob ein Objekt leer ist oder nicht
- 15. mit Operatoren innerhalb der Klasse oder Struktur?
- 16. Swift: Cast Any Objekt zu Int64 = Null
- 17. Tabelle zu zwei Modellen gehören?
- 18. Wie für ein JSON-Objekt zu überprüfen, in einem anderen
- 19. Swift: Struktur in JSON konvertieren?
- 20. Zufriedene Struktur in swift
- 21. Was ist der beste Weg, um eine verschachtelte Klasse/Objekt/Enum-Struktur in Java zu definieren?
- 22. Template - Klasse Objekt - Struktur von Klassenobjekten
- 23. Wie überprüfen Sie die aktuelle View-Controller-Klasse in Swift?
- 24. sollten Wildcards zu CNAME oder A NAME gehören?
- 25. TimeZoneInfo zu TIME_ZONE_INFORMATION Struktur
- 26. Leicht zu öffnen gehören Dateinamen in vim?
- 27. Wie wenn eine Klasse in Javascript, um zu überprüfen existiert
- 28. Wie Datenbankschema in swift überprüfen?
- 29. Tabelle gehören zu welchem Abschnitt in Word mit openxml
- 30. Klasse (oder Struktur) Selbstreferenz durch Vorlage
Sieht aus wie es in Swift zu tun 3. Allerdings Klasse bezwecken ** ** Super Eigenschaft und Struktur Objekte unmöglich ist, nicht haben. –