加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

麻烦使用Swift NSDate“timeIntervalSinceNow”

发布时间:2020-12-14 05:39:42 所属栏目:百科 来源:网络整理
导读:参见英文答案 “CGFloat is not convertible to Int” when trying to calculate an expression1个 我四处搜寻,被这个谜语搞得一团糟. 在Swift,Xcode 6.2中,这些行有效: let day_seconds = 86400let one_day_from_now = NSDate(timeIntervalSinceNow:86400)
参见英文答案 > “CGFloat is not convertible to Int” when trying to calculate an expression1个
我四处搜寻,被这个谜语搞得一团糟.

在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)

控制台输出:

“Playground execution failed: /var/folders/4n/88gryr0j2pn318sw_g_mgkgh0000gn/T/lldb/10688/playground625.swift:24:30: error: extra argument ‘timeIntervalSinceNow’ in call
let one_day_from_now = NSDate(timeIntervalSinceNow:day_seconds)”

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

这是因为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)是相同的或当你声明常量时确保它是double,例如:

let day_seconds = 86400.0

要么

let day_seconds: Double = 86400

要么

let day_seconds: NSTimeInterval = 86400

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读