当我的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,以便调试请求失败的原因。首先要做的是检查错误。域以确保它是HealthKit错误,然后比较错误。将代码转换为HKErrorCode枚举中的常量。问题是,我找不到任何应该出错的常数。HealthKit相关错误的域。苹果的文档中说,应该有一个名为“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/
如果我强制执行一个错误,然后在调试器中检查它,我确实会看到该错误。域名=“com.apple.healthkit”。我可以和那根绳子相比,
void OnHealthPermissionsCompleted (bool success, NSError error)
{
if(!success && error.Domain == "com.apple.healthkit")
{
//continue parsing...
}
}
但在这类事情中加入魔法字符串会让我感到恶心,特别是当我知道原生iOS中存在一个常量时。我是错过了什么,还是这是我唯一的选择?