Константа HKErrorDomain (домен ошибки HealthKit) в Xamarin

Я пишу обработку ошибок, когда мой клиент 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. Я что-то пропустил или это мой единственный вариант?


person thedigitalsean    schedule 18.09.2015    source источник


Ответы (1)


Теперь в Bugzilla Xamarin зарегистрирована ошибка для отображения этой константы:

https://bugzilla.xamarin.com/show_bug.cgi?id=34140

person cobey    schedule 21.09.2015