Swift 4.0.3 Date新API适配问题:ZamZamKit DateTimeHelper调用报错
解决Calendar方法调用报错:Extra argument 'value' in call
嘿,这个报错我之前踩过坑!咱们直接说问题出在哪以及怎么改:
错误根源
你用错了Calendar的方法——component(byAdding:)根本不是用来生成新日期的API,它的作用是提取日期的某个组件值,参数结构和你传递的完全不匹配,这才导致了"Extra argument 'value'"的报错。
要实现日期加天数的功能,得用Calendar专门的date(byAdding:value:to:options:)方法。
修正后的代码
把你的方法改成这样就能正常运行了:
public func incrementDay(date: Date = Date(), numberOfDays: Int = 1) -> Date { // 这里有几个关键修改点 Calendar.current.date(byAdding: .day, value: numberOfDays, to: date, options: [])! }
额外的细节提醒
- Swift 3及以后,枚举成员采用小写开头的命名规范,所以
.Day要改成.day; - 方法参数里的
from要换成to,这是date(byAdding:)方法的参数要求; - 最后那个
!强制解包有崩溃风险,如果传入极端值导致无法生成有效日期,程序会直接崩溃。更安全的写法是返回可选类型:
public func incrementDay(date: Date = Date(), numberOfDays: Int = 1) -> Date? { Calendar.current.date(byAdding: .day, value: numberOfDays, to: date, options: []) }
调用的时候用可选绑定处理结果,就能避免崩溃问题啦~
内容的提问来源于stack exchange,提问作者megatcorleone
相关产品推荐
相关产品推荐

