ho intenzione di partire per un po 'di una tangente in modo da capire che cosa è andando avanti.
Le stringhe non sono oggetti in rapido. !!!
Kinda. ???
A causa del modo di ponte numero verde funziona ... se si importa il runtime Objective-C allora si può trattare le stringhe come un oggetto ... check this out:
Questo codice non verrà compilato a tutti:
// Playground - noun: a place where people can play
// import Foundation
var foo: AnyObject = "hello"
^Type 'String' does not conform to protocol 'AnyObject'
Ma se io rimuovere il commento il quadro Fondazione, allora compila perfettamente bene, perché stiamo attivando ponte fra corde e NSString:
// Playground - noun: a place where people can play
import Foundation
var foo: AnyObject = "hello" // We're all good here!
E se si vuole verificare se foo è una stringa ... si può fare questo:
import Foundation
var foo: AnyObject = "hello"
foo.isKindOfClass(NSString) // this returns true
Quindi ... stringa non è un oggetto, ma se si trattano come uno sarà convertito in un NSString
e ora è un oggetto. Ma non è possibile verificare se un oggetto appartiene alla classe String
, perché non esiste qualcosa come un oggetto String
. Devi usare NSString
.
Naturalmente, si dovrebbe ancora fare ciò che Scott ha detto nella sua risposta, utilizzando le parole chiave is
o as?
.
fonte
2014-10-23 07:01:22
È stato facile. Giusto anche nella documentazione. Ops. https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_programming_language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-XID_513 – shim