2015-01-15 4 views
4

Я действительно застрял! Я не эксперт в ObjC, и теперь я пытаюсь использовать Swift. Я думал, что это будет намного проще, но это не так. Я помню, что Крэйг сказал, что они называют Swift «Objective-C без C», но в OS X есть слишком много типов C. В документах говорилось, что многие типы ObjC автоматически преобразуют, возможно двунаправленно, в типы Swift. Мне любопытно: как насчет типов C?Swift: конвертировать Int16 в Int32 (или NSInteger)

Вот где я застрял:

//array1:[String?], event.KeyCode.value:Int16 
let s = array1[event.keyCode.value]; //return Int16 is not convertible to Int 

Я попробовал некоторые вещи в ObjC:

let index = (Int) event.keyCode.value; //Error 

или

let index = (Int32) event.keyCode.value; //Error again, Swift seems doesn't support this syntax 

Что такое правильный способ преобразования Int16 в Int ?

+0

Попробуйте 'let s = array1 [Int (event.keyCode.value)]' – Jack

ответ

16

Для преобразования числа от одного типа к другому, вы должны создать новый экземпляр, передавая значение источника в качестве параметра - например:

let int16: Int16 = 20 
let int: Int = Int(int16) 
let int32: Int32 = Int32(int16) 

я использовал явные типы для объявления переменных, чтобы сделать концепция ясна - но во всех вышеперечисленных случаях тип может быть выведен:

let int16: Int16 = 20 
let int = Int(int16) 
let int32 = Int32(int16) 
1

Это не то, как этот тип литья работает в Swift. Вместо этого используйте:

Итак, вы в основном создаете экземпляр одной переменной на основе другой.

-1

для преобразования NSInteger в Int, попробуйте это .. Int(NSInteger!)

Смежные вопросы