2

我会尽量保持简短和简单。

我有一个 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关于有人遇到类似问题的信息,但是他们的代码很长而且令人困惑,我不明白答案。如果提供简单的解释和修复,我认为这对普通社区会很有用。

提前感谢您的帮助!

洛伊克

4

1 回答 1

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()
于 2015-01-18T19:16:41.363 回答