如何在 swift 中将 UInt 转换为 Int?

How to convert UInt to Int in swift?

我需要将一个变量从 NSUInt 转换为 Int 以将其作为参数传递给分配。

我尝试使用 Int() 进行初始化,但编译器拒绝 cannot invoke initializer for type 'int' with an argument of type '(UInt?)'

这是变量:NSUInteger count 这是对 allocatelet outPut = UnsafeMutablePointer<Float>.allocate(capacity: count)

的调用

如果不进行转换,编译器会生成此错误: cannot convert value of type 'UInt?' to expected argument type 'Int'

您需要使用位模式初始化器。

let unsignedInt = Int(bitPattern: UInt)

但这不会处理溢出情况。

因为是可选的,需要解包

var x: UInt?

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

请注意 Int(exactly:) returns 也是可选的,因此您可能希望使用 guard 语句或其他 if let...

更新,正如 vacawama Int(z) 指出的那样可能会崩溃