gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 14:57:30 24 4
gpt4 key购买 nike

对 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com