2015-07-19 19 views
6

Come posso controllare il tipo di oggetto in cui la mia variabile è in ios swift?Controllare il tipo di oggetto ios swift

Per esempio

let test= ["Chicago", "New York", "Oregon", "Tampa"] 

è prova NSArray? NSMutableArray? NSString?

Sono abituato allo studio visivo utilizzando una finestra immediata, può essere in modalità di debug in Xcode?

+0

risposta qui: http://stackoverflow.com/questions/24093433/how-to-determine-the-type-of-a-variable-in-swift – sashab

risposta

8

Esistono diversi metodi per determinare il tipo di oggetto in fase di debug o di compilazione


Se il tipo della variabile è esplicitamente dichiarata, basta cercarlo:

let test: [String] = ["Chicago", "New York", "Oregon", "Tampa"] 

Qui, test è chiaramente indicata come (una gamma Swift di String s) [String].


Se il tipo di variabile è implicitamente dedotto, possiamo ottenere alcune informazioni da ⌥ Opzione + clic.

let test = ["Chicago", "New York", "Oregon", "Tampa"] 

enter image description here

Qui, possiamo vedere test s' è di tipo [String].


Possiamo stampare il tipo di oggetto utilizzando dynamicType:

let test = ["Chicago", "New York", "Oregon", "Tampa"] 

println(test.dynamicType) 

Stampe:

Swift.Array<Swift.String> 

Possiamo anche vedere la nostra variabile in considerazione della variabile:

enter image description here

Qui, possiamo vedere il tipo della variabile chiaramente nella parentesi: [String]


Inoltre, ad un punto di rottura, si può chiedere al debugger sulla variabile:

(lldb) po test 
["Chicago", "New York", "Oregon", "Tampa"] 

(lldb) po test.dynamicType 
Swift.Array<Swift.String> 
4

È possibile utilizzare is in Swift.

+0

problema è io non so il tipo di variabile e vorrebbe evitare di inserire più istruzioni if.Posso controllare il tipo di variabile mentre passo attraverso il codice in modalità di debug? se è così, c'è una finestra immediata in xcode? –

+0

@DevTonio Nella console xCode, è possibile stampare i valori per le variabili con 'po test'. Stamperà le informazioni sull'oggetto lì. –

1
type(of:) 

Quale restituisce il tipo dinamico di un valore.

func foo<T>(x: T) -> T.Type { 
    return type(of: x) 
} 
Problemi correlati