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)