Как конвертировать UInt в Int в Swift? - PullRequest
1 голос
/ 25 сентября 2019

Мне нужно преобразовать переменную из NSUInt в Int, чтобы передать ее в качестве аргумента для выделения.

Я попытался инициализировать с помощью Int (), но компилятор отказывается cannot invoke initializer for type 'int' with an argument of type '(UInt?)'

этопеременная: NSUInteger count это вызов для выделения let outPut = UnsafeMutablePointer<Float>.allocate(capacity: count)

Без преобразования компилятор генерирует эту ошибку: cannot convert value of type 'UInt?' to expected argument type 'Int'

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Это потому, что это необязательно, вам нужно развернуть его

var x: UInt?

if let z = x {
    let y = Int(exactly: z) 
}

Обратите внимание, что Int(exactly:) также возвращает необязательное значение, так что вы можете захотеть использовать оператор guard или другой if let...

Обновление, как указано в vacawama Int (z), может привести к сбою

0 голосов
/ 25 сентября 2019

Вам необходимо использовать инициализатор битового шаблона.

let unsignedInt = Int(bitPattern: UInt)

Но это не устранит ситуации переполнения.

...