swift - 无法转换类型 '(AccountViewController) -> () -> (AccountViewController)' 的值

标签 swift oop delegates

对 Swift 还很陌生,所以请放轻松。使用继承的代码库。

出现此错误:

Cannot convert value of type '(AccountViewController) -> () -> (AccountViewController)' to expected argument type 'GetUserDelegate?'

这段代码在我的 View Controller 中。这是我编写的此示例中唯一的代码:

fileprivate var userDataSource = getAPI().getUser(delegate: self)

此代码是我的 API 定义的一部分:

func getUser(delegate: GetUserDelegate?) {
    sessionManager.request(ApiRequests.user).validate().responseJSON { (response: Alamofire.DataResponse<Any>) -> Void in
        switch response.result {
        case .success(let value):
            guard let user = Mapper<User>().map(JSONObject: value) else {
                delegate?.apiError(code: nil, message: "Cannot decode user")
                return
            }

            delegate?.getUserSuccess(user: user)
        case .failure(let err):
            delegate?.apiError(code: nil, message: err.localizedDescription)
        }
    }
}

这是协议(protocol):

protocol GetUserDelegate: APIErrorDelegate {
    func getUserSuccess(user: User)
}

现在在代码的其他地方我看到类似的函数,它们传入的只是委托(delegate):self,但这似乎不起作用并给我上述错误。

我的猜测是,这是因为我是直接在类定义中设置它,而不是在其中一个类方法中设置 - 我走在正确的轨道上吗?我之前完成了大量的 OOP 编码,但我从未使用过委托(delegate)设计模式,所以我认为我并不完全理解这里的实现。

最佳答案

我想错误很明显,你应该在你的 AccountViewController 中实现这样的 GetUserDelegate,比如:

class AccountViewController: UIViewController, GetUserDelegate {
   func getUserSuccess(user: User) {
     // stuff here //
   }
}

关于swift - 无法转换类型 '(AccountViewController) -> () -> (AccountViewController)' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49185219/

相关文章:

swift 。 RawRepresentable init 带有可选的 RawValue

java - 跳过继承层次并调用父类(super class)的方法的方法

javascript - Requirejs 和外部脚本

c++ - QStyleOptionButton 没有图标

ios - 弹出包含 ARKit 场景 View 的 View Controller 后,应用程序停止响应触摸

ios - 如何在 Swift 协议(protocol)中声明可选方法?

json - 如何在 Swift 4 中解码以整数作为键的 JSON?

r - 依赖注入(inject) : how to use/implement PicoContainer Framework in R

c# - 有没有办法在设置类的任何属性时调用方法?

iphone - heightForRowAtIndexPath崩溃