我会尽可能简短地保持这一点。
我有一个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。
到目前为止一直很好......
问题是当我尝试调用此函数时,出现错误:
呼叫参数#1缺少参数
我在这里阅读https://stackoverflow.com/a/26156765/3100991关于有类似问题的人,但他们的代码很长而且令人困惑,我不明白答案。如果提供简单的解释和修复,我认为对普通社区有用。
提前感谢您的帮助!
卢瓦克
答案 0 :(得分:2)
我只是尝试(在操场上)并且它有效。 我认为您的错误是在您的方法的调用。 由于您的方法是实例方法,因此必须在现有日期对象上调用它。 所以试着这样称呼它:
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()