2017-06-27 4 views
0

Wenn ich meine HealthKit-Daten mit HKSampleQuery abrufe, erstelle ich ein Array und befülle dann eine Tabellenansicht. Wenn ich dies tue, hat meine TableViewCell jedoch viele andere Zeichen nach der Blutzuckernummer. Hier ist ein Screenshot der Zelle:Zusätzliche Zeichen beim Ziehen von HealthKit

enter image description here

Heres, wo ich die Daten abfragen. Jede Hilfe bitte!

let endDate = NSDate() 
    let startDate = NSCalendar.current.date(byAdding: .day, value: number, to: endDate as Date) 
    let sampleType = HKSampleType.quantityType(forIdentifier: HKQuantityTypeIdentifier.bloodGlucose) 
    let mostRecentPredicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate as Date, options: []) 
    let query = HKSampleQuery(sampleType: sampleType!, predicate: mostRecentPredicate, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { (query, results, error) in 
     if let results = results as? [HKQuantitySample] { 
      self.bloodGlucose = results 
     } 
     DispatchQueue.main.async { 
      self.tableView.reloadData() 
     } 
    } 
    healthStore.execute(query) 

Hier ist, wo ich Setup die Tableview ...

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return bloodGlucose.count 
    } 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
       let currentCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
       let sugar = bloodGlucose[indexPath.row] 
       currentCell.textLabel?.text = "\(sugar)" 
       currentCell.detailTextLabel?.text = dateFormatter.string(from: sugar.startDate) 
       return currentCell 
} 
+0

Bitte fügen Sie den Code ein, den Sie zum Einrichten der Tabellenansichtszellen verwenden. – Allan

+0

Ich habe die Frage bearbeitet, um dies zu berücksichtigen. @Allan – Johnd

Antwort

0

scheint, dass Sie ganze String-Darstellung HKQuantitySample zeigen. Wenn Sie nur die Menge der HKQuantitySample anzeigen möchten, warum verwenden Sie nicht die quantity Eigenschaft?

currentCell.textLabel?.text = "\(sugar.quantity)" 

By the way, Sie besser erklären, um Ihre endDate als Date (nicht NSDate):

let endDate = Date() 
let startDate = Calendar.current.date(byAdding: .day, value: number, to: endDate) 
let sampleType = HKSampleType.quantityType(forIdentifier: .bloodGlucose) 
let mostRecentPredicate = HKQuery.predicateForSamples(withStart: startDate, end: endDate) 

Allgemeinen nicht NS Typen besser arbeiten mit Swift.

+0

hat super funktioniert! Vielen Dank! – Johnd

+1

Beachten Sie, dass die Generierung des Beschriftungstexts auf diese Weise nie richtig lokalisiert wird. Die von der 'description' Methode von' HKQuantity' zurückgegebene Zeichenfolge dient nur zu Debuggingzwecken. Wenn Sie eine lokalisierte Zeichenfolgendarstellung anzeigen möchten, müssen Sie etwas wie 'NSMeasurementFormatter' verwenden. – Allan

Verwandte Themen