[英]Swift - Declaring an array of generics
我正在努力在Swift中创建泛型数组。 这是我的协议/类。
public protocol InitializableWithData {
init(data: NSData?) throws
}
internal struct RequestWithCompletionHandler<T: InitializableWithData> {
let request: APIRequest<T>
let completionHandler: ((response: APIResponse<T>?, error: Error?) -> Void)?
}
var ongoingRequests = [RequestWithCompletionHandler<InitializableWithData>]()
我收到以下错误:
不支持将InitializableWithData用作符合协议“ InitializableWithData”的具体类型。
我对RequestWithCompletionHandler
的实际类型“包含”不感兴趣。 我只想跟踪所有请求,而不关心它们将“返回”哪个实体。 我想跟踪它们,以便取消它们,暂停它们,等等。
因此,我想跟踪所有正在进行的请求,以便在必要时可以重新执行它们。
错误消息指出您不能使用协议类型( InitializableWithData
)作为具体类型(在RequestWithCompletionHandler<InitializableWithData>
)。
您需要一个符合协议的具体类型,例如struct
public protocol InitializableWithData {
init(data: NSData?) throws
}
internal struct RequestWithCompletionHandler<T: InitializableWithData> {
let request: APIRequest<T>
let completionHandler: ((response: APIResponse<T>?, error: Error?) -> Void)?
}
struct Test : InitializableWithData {
let data : NSData?
init(data: NSData?) throws {
self.data = data
}
}
var ongoingRequests = [RequestWithCompletionHandler<Test>]()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.