Ich versuche, die Klasse eines Objekts in einer Klassenhierarchie zu bestimmen. Ich bin verloren, um zu erklären, warum der Test im folgenden Beispiel fehlschlägt.Ermitteln des Typs der Swift-Klasse
class BasicLocation {}
class AddressLocation : BasicLocation {}
class ContactLocation : BasicLocation {}
func mapView(_ mapView : MKMapView, viewFor: MKAnnotation)
->MKAnnotationView?{
if let test = viewFor as? BasicLocation {
let basicType = BasicLocation()
let a = type(of:test)
let b = type(of:basicType)
let c = type(of:test)
NSLog("a=\(a), type of a=\(type(of:a))")
NSLog("b=\(b), type of b=\(type(of:b))")
NSLog("c=\(c), type of b=\(type(of:c))")
if a == b {
NSLog("passed a and b")
} else {
NSLog("a and b do not match match")
}
if a == c {
NSLog("passed a and c")
}
output
>a=BasicLocation, type of a=BasicLocation.Type
>b=BasicLocation, type of b=BasicLocation.Type
>c=BasicLocation, type of b=BasicLocation.Type
>a and b do not match match
>a and c natch
Was ist viewFor hier? Wir können den Code, der es eingerichtet hat, nicht sehen, also haben wir keine Ahnung, wie sich dies auf die Ausgabe auswirkt. –
was ist 'test'? – holex
Dies könnte nützlich sein zu wissen: http://stackoverflow.com/a/40388434/3141234 – Alexander