Swift 分机,调用中参数 #1 缺少参数

Swift Extension, Missing Argument For Parameter #1 In Call

我会尽可能简短。

我有一个 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)!
    }
}

它的目的只是 return 一个指的是星期一早上的 NSDate。

目前一切顺利...

问题是当我尝试调用此函数时出现错误:

Missing Argument For Parameter #1 In Call

我在这里 读到有人遇到了类似的问题,但是他们的代码很长而且令人困惑,我不明白答案。如果提供简单的解释和修复,我认为这对一般社区会有用。

提前感谢您的帮助!

洛伊克

我只是尝试了一下(在操场上)并且它有效。 我认为你的错误在于你的方法的调用。 由于您的方法是实例方法,因此您必须在现有日期对象上调用它。 所以试着这样称呼它:

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()

但在你的情况下,最好的办法是 class 函数。

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()