1
我正試圖爲一個複雜的場景實現一個簡單的API。我有一個類型,它異步檢索數據(實際上是藍牙設備)。所以我想直到結束的API是這樣的:在閉包中返回泛型類型的動態泛型參數?
peripheral.requestData(.Temperature) { value: Double in
print(value)
}
我得到了一些好的想法來自this amazing article,所以這是我試圖實現以上:
class MyPeripheral {
class Keys {
static let Temperature = PeripheralKey<Double>("Temperature")
static let UserData = PeripheralKey<[String: String]>("UserData")
}
func requestData(service: Keys, handler: (value: ???Get ValueType from PeripheralKey???) -> Void) {
if let service = service as? PeripheralKey<Int> {
service.key //Do something
} else if let service = service as? PeripheralKey<[String: String]>
//Do something else
}
}
}
class PeripheralKey<ValueType>: MyPeripheral.Keys {
let key: String
init(_ key: String) {
self.key = key
}
}
我在返回的封閉類型中遇到問題。我希望基於傳入的外設泛型類型鍵進行強類型化,但無法掌握如何執行此操作,或者可能需要其他方法?任何幫助或方向將不勝感激!