【问题标题】:Extra argument error额外参数错误
【发布时间】:2016-02-11 13:42:46
【问题描述】:

我正在尝试创建一个简单的 ios 应用程序,当我传递完全相同的值时,我不断收到错误消息,即“调用中的额外参数”。

TaskManager.swift

struct task {
    var name = "Name"
    var desc = "Description"
}

var tasks = [task]()

class TaskManager: NSObject {

    func addTask(name: String, desc: String) {
        tasks.append(task(name: name, desc: desc))
    }

}

调用函数在另一个swift文件中,

class SecondViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var txtTask: UITextField!
    @IBOutlet weak var txtDesc: UITextField!
    @IBAction func btnAddTask(sender: UIButton) {
        if (txtTask.text != "") {
            TaskManager.addTask(txtTask.text, txtDesc.text)
            txtTask.text = nil
            txtDesc.text = nil
        }
    }
}

我正在发送完全相同的论点。我做错了什么?

【问题讨论】:

  • 结构应该以大写字母开头

标签: ios swift function parameter-passing


【解决方案1】:

现在它需要 1 个参数,这是一个初始化的任务管理器。您没有初始化任务管理器。如果您想像现在一样(不初始化),请使用您的方法static

static func addTask(etc..

那么你可以这样称呼它:

TaskManager.addTask(2 args...

或者,保持原样并初始化TaskManager:

let manager = TaskManager()
manager.addTask(etc...

【讨论】:

    【解决方案2】:
    struct Task {
        var name: String
        var desc: String
    }
    
    var tasks: [Task] = []
    
    class TaskManager: NSObject {
    
        static func addTask(name: String, desc: String) {
            tasks += [task(name: name, desc: desc)]
        }   
    }
    
    TaskManager.addTask("someName", desc: "shouldn't this be a bool?")
    
    print(tasks) // [task(name: "someName", desc: "shouldn\'t this be a bool?")]
    

    addTask(_:)前面加上static就可以了。

    【讨论】:

    • 哈哈,我想我们差不多。我发布这个作为答案的唯一原因是他的代码太乱了,让我很痒:p
    • 结构体应该以大写字母开头
    • @LeoDabus:谢谢,我错过了那个:)
    • @Eendje 感谢您的回答!以后我会尽量让我的代码看起来整洁:p
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2020-02-20
    • 2015-09-13
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多