麻烦使用Swift NSDate" timeIntervalSinceNow"

时间:2015-04-22 16:16:07

标签: swift swift-playground

我已经四处寻找并被这个谜语弄得晕头转向。

在Swift,Xcode 6.2中,这些行有效:

let day_seconds = 86400
let one_day_from_now = NSDate(timeIntervalSinceNow:86400)

但是以下内容会返回错误:

let day_seconds = 86400
let one_day_from_now = NSDate(timeIntervalSinceNow:day_seconds)

控制台输出:

  

"游乐场执行失败:/var/folders/4n/88gryr0j2pn318sw_g_mgkgh0000gn/T/lldb/10688/playground625.swift:24:30:错误:额外参数' timeIntervalSinceNow'在电话中   让one_day_from_now = NSDate(timeIntervalSinceNow:day_seconds)"

这里发生了什么?为什么NSDate棘手?

1 个答案:

答案 0 :(得分:6)

这是因为timeIntervalSinceNow期待NSTimeInterval Double

如果你这样做:

let day_seconds = 86400

day_second是Int类型,它不是方法所期望的。 但是,当您键入数字本身时:

let one_day_from_now = NSDate(timeIntervalSinceNow:86400)

编译器暗示你传递了Double,因为它是方法所期望的,这是好的。

解决方案可以使用 NSTimeInterval(day_seconds)Double(day_seconds)相同或当您声明常量时确保它是双倍的,例如:

let day_seconds = 86400.0

let day_seconds: Double = 86400

let day_seconds: NSTimeInterval = 86400