我会尽可能保持简短。
我有一个 NSDate 扩展,我在整个应用程序中使用它来完成许多事情,但我遇到了一个(奇怪的)非常简单的函数的问题。
扩展的相关部分是:
import Foundation
extension NSDate {
func nineAMMonday() -> NSDate {
let greg = NSCalendar.currentCalendar()
let componenets = NSDateComponents()
componenets.weekday = 2
componenets.hour = 9
componenets.minute = 0
componenets.second = 0
return greg.dateFromComponents(componenets)!
}
}
其目的只是返回一个 NSDate,它指的是星期一早上。
到目前为止一切顺利...
问题是当我尝试调用此函数时,出现错误:
Missing Argument For Parameter #1 In Call
我在这里读到https://stackoverflow.com/a/26156765/3100991关于有类似问题的人,但是他们的代码又长又困惑,我不明白答案。我认为如果提供简单的解释和修复,这对一般社区会很有用。
提前感谢您的帮助!
卢伊克
最佳答案
我只是尝试了一下(在 Playground 上)并且它有效。 我认为你的错误在于你的方法的调用。 由于您的方法是实例方法,因此您必须在现有日期对象上调用它。 所以尝试这样调用它:
import Foundation
extension NSDate {
func nineAMMonday() -> NSDate {
let greg = NSCalendar.currentCalendar()
let componenets = NSDateComponents()
componenets.weekday = 2
componenets.hour = 9
componenets.minute = 0
componenets.second = 0
return greg.dateFromComponents(componenets)!
}
}
// Call
var date = NSDate();
date.nineAMMonday()
但就你而言,最好的办法是类函数。
import Foundation
extension NSDate {
class func nineAMMonday() -> NSDate {
let greg = NSCalendar.currentCalendar()
let componenets = NSDateComponents()
componenets.weekday = 2
componenets.hour = 9
componenets.minute = 0
componenets.second = 0
return greg.dateFromComponents(componenets)!
}
}
// Call
NSDate.nineAMMonday()
关于Swift 扩展,调用中参数 #1 缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013653/