Xamarin 中的 HKErrorDomain(HealthKit 错误域)常量
HKErrorDomain (HealthKit Error Domain) Constant in 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 枚举中的常量进行比较。问题是,对于与 HealthKit 相关的错误,我找不到任何应该在 error.Domain 中的常量。 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 中存在一个常量时。我是不是遗漏了什么或者这是我唯一的选择?
Xamarin 的 Bugzilla 上现在有一个 bug 来揭示这个常量:
我正在为我的 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 枚举中的常量进行比较。问题是,对于与 HealthKit 相关的错误,我找不到任何应该在 error.Domain 中的常量。 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 中存在一个常量时。我是不是遗漏了什么或者这是我唯一的选择?
Xamarin 的 Bugzilla 上现在有一个 bug 来揭示这个常量: