在Swift中将NSNumber转换为NSTimeInterval

时间:2015-05-12 15:49:17

标签: swift casting ios8 nsnumber nstimeinterval

我在Swift中遇到某种类型的强制转换,因为我对Swift很新。

这是我的代码:

 if let matchDateTime = item["matchDate"].number {
     _matchDateTime=matchDateTime
 }

 println(_matchDateTime)                      
 let date = NSDate(timeIntervalSince1970:_matchDateTime)

但它给了我错误:

Extra argument timeSinceInterval1970 in call

我不知道该错误是什么,可能会将NSNumber转换为NSTimeInterval,但如何?不知道。

任何可以帮助我的人。

提前致谢。

2 个答案:

答案 0 :(得分:31)

NSTimeInterval只是一个类型化的Double

因此从NSNumber转换为NSTimeInterval:

let myDouble = NSNumber(double: 1.0)
let myTimeInterval = NSTimeInterval(myDouble.doubleValue)

编辑: 反之亦然。

let myTimeInterval = NSTimeInterval(1.0)
let myDouble = NSNumber(double: myTimeInterval)

编辑2: 正如@DuncanC在下面的评论中指出的那样,你可以直接在方法调用中进行投射:

let date = NSDate(timeIntervalSince1970: NSTimeInterval(_matchDateTime))

答案 1 :(得分:5)

尝试将您的NSNumber转换为Double。此代码适用于游乐场:

let aNumber: NSNumber = 1234567.89
let aDate = NSDate(timeIntervalSinceReferenceDate: Double(aNumber))