Я пишу обработку ошибок, когда мой клиент HealthKit запрашивает разрешение на доступ к данным в Xamarin iOS. Делаю запрос так:
public HKClient()
{
var HealthKitStore = new HKHealthStore();
HealthKitStore.RequestAuthorizationToShare (dataTypesToWrite, dataTypesToRead, OnHealthPermissionsCompleted);
}
void OnHealthPermissionsCompleted (bool success, NSError error)
{
//Parse error.Domain and error.Code herere
}
В моем OnHealthPermissionsCompleted я хочу проанализировать NSError, чтобы отладить, почему наш запрос не удался. Первое, что нужно сделать, это проверить error.Domain, чтобы убедиться, что это ошибка HealthKit, а затем сравнить error.Code с константами в перечислении HKErrorCode. Проблема в том, что я не могу найти константу для того, что должно быть в error.Domain для ошибок, связанных с HealthKit. В документации Apple говорится, что для сравнения должна быть константа с именем «HKErrorDomain», однако ее нет в Xamarin. https://developer.apple.com/library/prerelease/watchos/documentation/HealthKit/Reference/HealthKit_Constants/index.html#//apple_ref/doc/constant_group/Health_Kit_Error_Domain
https://developer.xamarin.com/api/namespace/HealthKit/
Если я вызову ошибку, а затем проверю ее в отладчике, я увижу, что error.Domain = "com.apple.healthkit". Я мог бы просто сравнить с этой строкой,
void OnHealthPermissionsCompleted (bool success, NSError error)
{
if(!success && error.Domain == "com.apple.healthkit")
{
//continue parsing...
}
}
но добавление волшебных строк в такие вещи вызывает у меня неприязнь, особенно когда я знаю, что константа для этого существует в нативной iOS. Я что-то пропустил или это мой единственный вариант?