代码之家  ›  专栏  ›  技术社区  ›  thedigitalsean

Xamarin中的HKErrorDomain(HealthKit错误域)常量

  •  0
  • thedigitalsean  · 技术社区  · 9 年前

    当我的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中存在一个常量时。我是错过了什么,还是这是我唯一的选择?

    1 回复  |  直到 9 年前
        1
  •  2
  •   cobey    9 年前

    现在,Xamarin的Bugzilla上出现了一个bug,以显示这个常量:

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