mam zamiar zejść na kawałku stycznej więc zrozumieć, co jest dziać się.
Struny nie są obiektami w szybkim tempie. !!!
Kinda. ???
Ze względu na sposób bezpłatny pomostowego działa ... jeśli importować Objective-C czas pracy to można traktować ciągi jako obiekt ... to sprawdzić:
Ten kod nie będzie kompilować na wszystkich:
// Playground - noun: a place where people can play
// import Foundation
var foo: AnyObject = "hello"
^Type 'String' does not conform to protocol 'AnyObject'
Ale gdybym odkomentowaniu ramy Foundation, to kompiluje perfekcyjnie, ponieważ jesteśmy aktywacji pomostowych pomiędzy ciągiem i NSString:
// Playground - noun: a place where people can play
import Foundation
var foo: AnyObject = "hello" // We're all good here!
A jeśli chcesz sprawdzić, czy foo jest ciągiem ... można to zrobić:
import Foundation
var foo: AnyObject = "hello"
foo.isKindOfClass(NSString) // this returns true
So ... ciąg nie jest obiektem, ale jeśli traktować je jako jeden zostanie ona przekształcona w NSString
a teraz jest to obiekt. Ale nie można sprawdzić, czy obiekt należy do klasy String
, ponieważ nie ma czegoś takiego jak obiekt String
. Musisz użyć NSString
.
Oczywiście nadal powinieneś robić to, co Scott powiedział w swojej odpowiedzi, używając słów kluczowych is
lub as?
.
To było łatwe. W samej dokumentacji. Ups. https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_programming_language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-XID_513 – shim