Swift2 - HKSampleQuery

let hkSampleType:HKSampleType = HKSampleType.correlationTypeForIdentifier(HKCorrelationTypeIdentifierFood)!
let query = HKSampleQuery(sampleType: hkSampleType, predicate: predicate, limit: 80, sortDescriptors: nil, resultsHandler: { (query:HKSampleQuery, results:[HKSample]!, error:NSError!) -> Void in
    //code
})

это все, но я получаю сообщение об ошибке: Cannot find an initializer for type 'HKSampleQuery' that accepts an argument list of type '(sampleType: HKSampleType, predicate: NSPredicate, limit: Int, sortDescriptors: nil, resultsHandler: (HKSampleQuery, [HKSample]!, NSError!) -> Void)'

Как будет правильный синтаксис?

1 ответ

Решение

Я не эксперт ни в Swift, ни в HealthKit, но это компилируется в Xcode 7:

let hkSampleType:HKSampleType = HKSampleType.correlationTypeForIdentifier(HKCorrelationTypeIdentifierFood)!
let query = HKSampleQuery(sampleType: hkSampleType, predicate: nil, limit: 80, sortDescriptors: nil, resultsHandler: { (query:HKSampleQuery, results:[HKSample]?, error:NSError?) -> Void in
    //code
})

В закрытии, results а также error являются опциями в iOS 9. Вы объявили их как развернутые.

Одна вещь, в которой я не уверен, что вы можете использовать HKSampleQuery за HKCorrelation, Вот правильная декларация для HKCorrelationQuery если вам это нужно:

let corralationType = HKCorrelationType.correlationTypeForIdentifier(HKCorrelationTypeIdentifierFood)!
let query = HKCorrelationQuery(type: corralationType, predicate: nil, samplePredicates: nil) { (query: HKCorrelationQuery, results: [HKCorrelation]?, error: NSError?) -> Void in

}
Другие вопросы по тегам