2015-07-19 3 views
6

Как проверить тип объекта, который моя переменная находится в ios swift?Проверить Тип объекта ios swift

Для примера

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

является испытание NSArray? NSMutableArray? NSString?

Я использую визуальную студию с использованием непосредственного окна, может ли это быть в режиме отладки в Xcode?

+0

Ответил здесь: http://stackoverflow.com/questions/24093433/how-to-determine-the-type-of-a-variable-in-swift – sashab

ответ

8

Существует несколько способов определения типа объекта при отладке или времени компиляции.


Если тип переменной явно объявлена, просто посмотрите на него:

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

Здесь test четко обозначена как [String] (в Swift массив String с).


Если тип переменной неявно Inferred, мы можем получить некоторую информацию ⌥ Option + щелчок.

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

enter image description here

Здесь мы можем увидеть test «s типа является [String].


Мы можем напечатать тип объекта с помощью dynamicType:

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

println(test.dynamicType) 

Печать:

Swift.Array<Swift.String> 

Мы также можем видеть нашу переменную с учетом этой переменной:

enter image description here

Здесь мы можем увидеть тип переменной явно в скобках: [String]


Кроме того, в точке разрыва, мы можем попросить отладчик о переменной:

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

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

Вы можете использовать is в Swift.

if test is NSArray { 
    println("is NSArray") 
} 
+0

проблема я не знаю, тип переменной и хотел бы избежать вставки нескольких операторов if.Могу ли я просто проверить тип переменной, когда я перехожу через код в режиме отладки? Если это так, есть ли окно в xcode? –

+0

@DevTonio В консоли xCode вы можете распечатать значения переменных с помощью 'po test'. Он распечатает информацию об объекте. –

1
type(of:) 

Что возвращает динамический тип значения.

func foo<T>(x: T) -> T.Type { 
    return type(of: x) 
} 
Смежные вопросы