gpt4 book ai didi

ios - 需要属性来存储通用类型的完成处理程序

转载 作者:行者123 更新时间:2023-11-29 05:57:13 26 4
gpt4 key购买 nike

我定义了这样的类型别名:

public typealias ResponseCompletion<T> = (Result<T>, [AnyHashable: Any]?) -> Void

然后我有一个带有相关方法的类:

public func load<T>(completion: @escaping ResponseCompletion<T>)

这工作正常,直到我将完成处理程序从这个方法转发到另一个方法。但现在我需要存储完成处理程序以供以后使用。

当我做这样的事情时:

class ServiceOperation<T: Any>: Operation {
private let completion: ResponseCompletion<T>

然后尝试存储处理程序

    public func load<T>(Result<T>, [AnyHashable: Any]?) -> Void {
self.completion = completion
}


我收到以下错误:

Cannot assign value of type 'ResponseCompletion<T>' (aka '(Result<T>, Optional<Dictionary<AnyHashable, Any>>) -> ()') to type '(Result<T>, [AnyHashable : Any]?) -> Void'


任何人都有一个想法,如何正确定义属性以便我可以存储完成处理程序?

最佳答案

我不确定您想要实现什么,但在您调用 load() 函数后,此代码将存储 completion

struct Result<T> {}
typealias ResponseCompletion<T> = (Result<T>, [AnyHashable: Any]?) -> ()
class ServiceOperation<T: Any>: Operation {
private var completion: ResponseCompletion<T>?
public func load(completion: @escaping ResponseCompletion<T>) {
self.completion = completion
}
}

使用示例:

ServiceOperation<Int>().load { (result, params) in

}

关于ios - 需要属性来存储通用类型的完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039036/

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