【问题标题】:Swift 2 - Argument passed to call that takes no argumentsSwift 2 - 传递给不带参数的调用的参数
【发布时间】:2016-02-17 17:29:22
【问题描述】:

我试图在我的 Model 类上调用 save 函数,但是即使它适用于 1.2,它也会在 2.1 中引发此错误:

Argument passed to call that takes no arguments

func save() -> NSError?{
    var error: NSError?
    self.context?.save(error) // Error: Argument passed to call that takes no arguments
    return error
}

编辑:

我将代码转换为:

func save() -> NSError?{
    do {
        try context!.save()
    } catch let error as NSError? {
        print("error saving core data: \(error)")
    }
}

...但现在我收到了:

Missing return in a function expected to return 'NSError?'

【问题讨论】:

    标签: ios swift swift2 swift2.1


    【解决方案1】:

    在 swift 2.0 中,context.save 函数实现根据新的错误处理进行了更改!

    改成

     do{
          try context!.save()
          }catch let error as NSError{
             print("error saving core data: \(error)")
            }
    

    【讨论】:

    • 哦!所以我所有的错误处理方法都是这样改变的。干杯!
    • 是的,你也可以看到它,如果你只是输入 context.save 并等待它说“save() throws”的代码完成,这是一个你必须使用 do、try、catch 的指示符块;)
    • 我在构建时遇到了问题。现在,我开始收到Missing return in a function expected to return NSError?,当我将NSError 更改为NSError? 时,同样的错误仍在继续。你有什么想法吗?
    【解决方案2】:
    func save() -> NSError?{
        do {
            if let context = context {
                try context.save()
            }
        } catch let error as NSError? {
            print("error saving core data: \(error)")
            return error
        }
        return nil
    }
    

    【讨论】:

    • 王牌!像魅力一样工作。谢谢
    • 我应该使用context? 还是context!
    • 我不知道该函数在做什么,但通常尝试上下文?首先...
    【解决方案3】:

    我不知道这个方法或子类,但你可以尝试使用你的错误变量的指针。

    self.context?.save(&error)

    【讨论】:

    • 这迫使我删除带有错误日志的& 符号:'&' used with non-input argument of type '()'
    • 好的,抱歉,@iVentis 的答案看起来很有希望
    • 但是现在我收到一个不同的错误,请检查我在问题中的编辑
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多