2015-01-30 30 views
8

dodaję próbkę tak:Usuń dodaną próbkę Zdrowia App

var store:HKHealthStore? 
date = NSDate() 
let type = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDietaryVitaminA) 
quantity = HKQuantity(unit: HKUnit.gramUnitWithMetricPrefix(.Micro), doubleValue: 100) 
let sample = HKQuantitySample(type: type, quantity: quantity, startDate: date, endDate: date) 
store.saveObject(sample, withCompletion: { (success, error) -> Void in 
      if(error != nil) { 
       println("Error saving sample: \(error.localizedDescription)") 
      }else{ 
       println("Sample saved successfully!") 
      } 
     }) 

A kiedy chcę usunąć tę próbkę mogę wykonać:

store.deleteObject(sample, withCompletion: {(success, error) -> Void in 
    if(error != nil) { 
     println("Error deleting sample: \(error.localizedDescription)") 
    }else{ 
     println("Sample deleted successfully!") 
    } 
}) 

I to wraca do mnie: Błąd podczas usuwania próbki: obiekt nie znaleziono Za każdym razem używam tej samej "daty" dla startDate i endDate. Mam tryed z let sample = HKQuantitySample(type: type, quantity: quantity, startDate: date, endDate: date, metadata: metadata) gdzie metadane let metadata = [HKMetadataKeyExternalUUID:"\(Int64(date.timeIntervalSince1970))"], ale bezskutecznie ...

Odpowiedz

2

To nie jest możliwe, aby usunąć dane dotyczące zdrowia, który został wprowadzony przez ApplicationA w ApplicationB, inną niż aplikacja Apple'a Zdrowia.

Zgodnie z dokumentacją firmy Apple możliwe jest usunięcie danych dotyczących zdrowia, które zostały utworzone tylko przez odpowiednią aplikację. Mimo że użytkownik otrzymał pozwolenie na pisanie, nie ma możliwości usunięcia innych danych dotyczących zdrowia ze swojej aplikacji, ale jest to możliwe tylko w aplikacji Apple Health.

Od the documentation:

UWAGA

Chociaż aplikacja może zarządzać tylko te obiekty to utworzone i zapisane, użytkownicy mogą usunąć wszelkie dane, które chcą za pomocą aplikacji Health.

1

Tak naprawdę otrzymałem pomoc od Apple z tym problemem, ale jeszcze jej nie rozwiązałem. Kodujesz to dokładnie tak samo jak ja, ale powiedzieli mi, że problem polega na tym, że tworzymy nową próbkę, a następnie próbujemy ją natychmiast usunąć. Próbka jeszcze nie istnieje, więc zwraca błąd nie znaleziony.

Co należy zrobić (teoretycznie) to uruchomić HKSampleQuery, a następnie wykonać usuwanie z zwróconym obiektem. Ten obiekt już istnieje w HealthKit i można go usunąć.

Nadzieję, że pomaga!

EDYCJA: Rozwiązano ... Stwierdziłem, że moja data/godzina jest zbyt surowa. Zmodyfikowałem datę startDate/endDate, aby przywrócić format MM/DD/YYYY, a próbki zostały usunięte poprawnie. Mam nadzieję, że ci pomaga!