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

标签 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,它指的是星期一早上。

到目前为止一切顺利...

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

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/

相关文章:

java - 需要 ActionListener 代码解释

c - 错误消息 : undefined symbol _msize in C

swift - 当内容太长时,具有 .estimated 宽度的组合布局项目会使应用程序崩溃

javafx - 传递参数JavaFX FXML

带有数组参数的 JavaScript onclick

c - 如何修改已传递给 C 函数的指针?

qt moc.exe 错误

swift - 如何将解析ACL设置为公共(public)写入?

swift - 安全文本 .echosbullets 不适用于密码字段

Swift TextView 不在文本顶部