Karmaşık bir senaryo için basit bir API'ye ulaşmaya çalışıyorum. Verileri eşzamansız olarak alan bir türüm var (aslında bluetooth cihazı). Bu yüzden ile bitirmek çalışıyorum API şudur:Kapatmada jenerik tip döndüren dinamik jenerik parametreler?
peripheral.requestData(.Temperature) { value: Double in
print(value)
}
ben this amazing article bazı iyi fikirler var, bu yüzden bu yukarıda ulaşmak girişiminde aşağıdadır: Ben
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
}
}
Döndürülen kapatma türü ile ilgili sorun yaşıyorum. Geçilen periferik jenerik tip anahtarına göre güçlü bir şekilde yazılmak istiyorum, ancak bunu nasıl yapacağımı anlayamıyorum veya belki farklı bir yaklaşıma ihtiyacım var mı? Herhangi bir yardım veya yön büyük takdir edilecektir!