【问题标题】:Unsigned Long Long from Double in SwiftUnsigned Long Long 来自 Swift 中的 Double
【发布时间】:2015-10-18 00:19:27
【问题描述】:

我曾经在 Objective-C 中使用过以下代码:

double currentTime = CFAbsoluteTimeGetCurrent();

// self.startTime is called before, like     
// self.startTime = CFAbsoluteTimeGetCurrent();

double elapsedTime = currentTime - self.startTime;

// Convert the double to milliseconds
unsigned long long milliSecs = (unsigned long long)(elapsedTime * 1000);

在我目前的快速代码中:

let currentTime: Double = CFAbsoluteTimeGetCurrent()
let elapsedTime: Double = currentTime - startTime

let milliSecs: CUnsignedLongLong = elapsedTime * 1000

但是我得到一个错误,double 无法转换为 CUnsignedLongLong,这是有道理的。有没有办法像在 Objective-C 中一样投射它?有没有办法解决这个问题?

【问题讨论】:

    标签: swift double unsigned-long-long-int


    【解决方案1】:

    有没有办法像在 Objective C 中那样转换它?有没有办法解决这个问题?

    let milliSecs = CUnsignedLongLong(elapsedTime * 1000)
    

    或者

    let milliSecs = UInt64(elapsedTime * 1000)
    

    【讨论】:

      【解决方案2】:

      CUnsignedLongLong 在标准库中的定义是:

      typealias CUnsignedLongLong = UInt64
      

      所以要将Double 转换为CUnsignedLongLong,您需要使用创建CUnsignedLongLong 的新实例

      CUnsignedLongLong(elapsedTime * 1000)
      

      UInt64(elapsedTime * 1000)
      

      【讨论】:

        【解决方案3】:

        Swift 不允许隐式类型转换。使用构造函数为其类型创建值。

        let milliSecs = CFUnsignedLongLong(elapsedTime * 1000)
        

        【讨论】:

          猜你喜欢
          • 2016-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-23
          • 1970-01-01
          • 2014-11-03
          • 2012-05-24
          相关资源
          最近更新 更多