我需要将变量从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'
答案 0 :(得分:2)
这是因为它是可选的,您需要将其拆开
var x: UInt?
if let z = x {
let y = Int(exactly: z)
}
请注意,Int(exactly:)
也返回一个可选值,因此您可能想使用guard
语句或其他if let...
更新可能会崩溃
答案 1 :(得分:0)
您需要使用位模式初始化程序。
let unsignedInt = Int(bitPattern: UInt)
但这不会照顾溢出情况。