gpt4 book ai didi

ios - 无法从日期扩展的功能分配给 Int

转载 作者:行者123 更新时间:2023-11-28 11:35:05 25 4
gpt4 key购买 nike

我需要得到两个日期相隔多少天,所以我使用了我在网上找到的这段代码

extension Date {

func years(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.year], from: sinceDate, to: self).year
}

func months(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.month], from: sinceDate, to: self).month
}

func days(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.day], from: sinceDate, to: self).day
}

func hours(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.hour], from: sinceDate, to: self).hour
}

func minutes(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.minute], from: sinceDate, to: self).minute
}

func seconds(_ sinceDate: Date) -> Int? {
return Calendar.current.dateComponents([.second], from: sinceDate, to: self).second
}
}

它是 Date 类的扩展。

我在使用这些功能时遇到问题,我有这个功能

func countDays() {
if let daysLeft = Date.days(targetDate) {
self.daysLeft = daysLeft
}
}

但是 Xcode 告诉我

条件绑定(bind)的初始化器必须具有可选类型,而不是“(Date) -> Int?”

所以,然后我尝试了这个功能

func countDays() {
let daysLeft = Date.days(targetDate)
self.daysLeft = daysLeft
}

Xcode 仍然告诉我

无法分配“(日期)-> Int 类型的值?”输入“Int”

我已经尝试构建该项目几次,因为我认为这可能是一个错误,但问题仍然存在。

谁能指出这里可能存在的问题?提前致谢!

编辑:我已经尝试像这样强制解包返回值

func years(_ sinceDate: Date) -> Int {
return Calendar.current.dateComponents([.year], from: sinceDate, to: self).year!
}

Xcode 仍然告诉我同样的事情无法将类型“(Date) -> Int”的值分配给类型“Int”

最佳答案

您正在调用 Date 类型的函数。但是,该函数不是static。您必须创建一个日期实例并调用该函数:

let now = Date()
if let daysLeft = now.days(targetDate) {
self.daysLeft = daysLeft
}

关于ios - 无法从日期扩展的功能分配给 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55619823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com