我在Swift中遇到某种类型的强制转换,因为我对Swift很新。
这是我的代码:
if let matchDateTime = item["matchDate"].number {
_matchDateTime=matchDateTime
}
println(_matchDateTime)
let date = NSDate(timeIntervalSince1970:_matchDateTime)
但它给了我错误:
Extra argument timeSinceInterval1970 in call
我不知道该错误是什么,可能会将NSNumber
转换为NSTimeInterval
,但如何?不知道。
任何可以帮助我的人。
提前致谢。
答案 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))