GÜNCELLEME Bu switch
açıklamaya bir if-else
taşırkenNeden girinti, Swift 3'teki bu anahtar deyiminde çalışmıyor?
Swift 3.1 düzeltilmiştir, o tür kesmesi çalışma değildi fark ettim. quantityTypeIdentifier
zaten bu türde olduğunda her case
'da neden HKQuantityTypeIdentifier
belirtmem gerekiyor?
func process(samples: [HKSample]?, quantityTypeIdentifier: HKQuantityTypeIdentifier) {
DispatchQueue.main.async { [weak self] in
if let quantitySamples = samples as? [HKQuantitySample] {
for sample in quantitySamples {
switch quantityTypeIdentifier {
case HKQuantityTypeIdentifier.distanceWalkingRunning:
// code
case HKQuantityTypeIdentifier.activeEnergyBurned:
// code
case HKQuantityTypeIdentifier.heartRate:
// code
default:
fatalError("Quantity Type Identifier not implemented \(quantityTypeIdentifier)")
}
}
}
}
}
ben gibi işlevi çağırmak mümkün duyuyorum:
process(samples: samples, quantityTypeIdentifier: .distanceWalkingRunning)
'HKQuantityTypeIdentifier' enum türü değildir. Bu bir yapı. Muhtemelen sebebi budur. – vadian
Ben Swift kitapta bir şey bulmak mümkün olmamıştır, ama bana öyle geliyor ki 'eğer quantityTypeIdentifier == .distanceWalkingRunning {}' eserler, daha sonra switch deyimi de bunu ele almak gerekir eğer. – jjatie
Bu 'struct' Obj-C ile uyumluluk için bir “enum” olmasının sebebi midir? – jjatie