在Swift中将NSNumber转换为NSTimeInterval

Bei*_*shi 9 casting nsnumber nstimeinterval swift ios8

因为我对Swift很新,所以我在Swift中遇到了某种类型的转换.

这是我的代码:

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

 println(_matchDateTime)                      
 let date = NSDate(timeIntervalSince1970:_matchDateTime)
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:

Extra argument timeSinceInterval1970 in call
Run Code Online (Sandbox Code Playgroud)

我不知道那个错误,可能会被转换NSNumberNSTimeInterval怎么样?不知道.

任何可以帮助我解决这个问题的人.

提前致谢.

Bla*_*man 32

NSTimeInterval只是一个类型化的Double.

因此从NSNumber转换为NSTimeInterval:

let myDouble = NSNumber(double: 1.0)
let myTimeInterval = NSTimeInterval(myDouble.doubleValue)
Run Code Online (Sandbox Code Playgroud)

编辑:反之亦然.

let myTimeInterval = NSTimeInterval(1.0)
let myDouble = NSNumber(double: myTimeInterval)
Run Code Online (Sandbox Code Playgroud)

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

let date = NSDate(timeIntervalSince1970: NSTimeInterval(_matchDateTime))
Run Code Online (Sandbox Code Playgroud)


Dun*_*n C 5

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

let aNumber: NSNumber = 1234567.89
let aDate = NSDate(timeIntervalSinceReferenceDate: Double(aNumber))
Run Code Online (Sandbox Code Playgroud)

  • 你应该接受我或布莱克的回答.两者都解决了你的问题 选择一个你更舒服的那个. (2认同)