Swift: преобразование Int16 в Int32 (или NSInteger)

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

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

//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?

4 ответов


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

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)

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

let a : Int16 = 1
let b : Int = Int(a)

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


в моем случае" я пытался преобразовать основные данные Int16 в Int " явное литье не сработало. Я сделал так

let quantity_string:String = String(format:"%d",yourInt16value)
let quantity:Int = Int(quantity_string)

чтобы преобразовать NSInteger в Int, попробуйте это.. Int(NSInteger!)