簡體   English   中英

Swift-聲明泛型數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM