Swift扩展,在调用中缺少参数#1的参数

时间:2015-01-18 19:09:09

标签: swift parameters compiler-errors arguments swift-extensions

我会尽可能简短地保持这一点。

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

提前感谢您的帮助!

卢瓦克

1 个答案:

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