【问题标题】:How to convert UInt to Int in swift?如何快速将 UInt 转换为 Int?
【发布时间】:2020-01-25 14:42:26
【问题描述】:

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

我尝试使用 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'

【问题讨论】:

    标签: swift type-conversion int uint


    【解决方案1】:

    因为是可选的,所以需要解包

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

    请注意,Int(exactly:) 也返回一个可选项,因此您可能需要使用 guard 语句或另一个 if let...

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

    【讨论】:

    • 如果x 对于Int 来说太大,这将崩溃。我推荐if let z = x, let y = Int(exactly: z) {
    【解决方案2】:

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

    let unsignedInt = Int(bitPattern: UInt)
    

    但这不会处理溢出情况。

    【讨论】:

      猜你喜欢
      • 2014-11-23
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      相关资源
      最近更新 更多