c# - Xamarin iOS : Wait for HKHealthStore SaveObject to finish

标签 c# ios xamarin.ios healthkit

我目前正在处理一个我无法单独解决的问题。我尝试将 HealthKit 集成到我的应用程序中。正常的解决方案工作完美,我目前正在处理错误以在出现问题时通知用户。问题是方法“SaveObject()”似乎是异步的,如果设置成功,外部方法已经返回 false。我不知道如何解决这个问题。 :-(

下面是我目前的代码片段。

private bool _saveToHealth(Data d)
{
    HKHealthStore hkStore = new HKHealthStore ();
    bool isSuccessful = false;
    hkStore.SaveObject (d, (bool arg1, NSError arg2) => {
            isSuccessful = arg1;
    });
    return isSuccessful;
}

最佳答案

你真的不能这样写代码。您需要重组代码,以便在其他地方处理保存状态。

正如您所指出的,不能保证在您返回之前执行带有 isSuccessful = arg1 的委托(delegate)。

现在,如果上述调用是从异步方法执行的,您可以调用该方法的异步版本:

async bool SaveToHealth (Data d)
{
     var hkStore = new HKHealthStore ();
     try {
          await hkStore.SaveObjectAsync (d);
          return true;
     } catch {
          return false;
     }
}

```

具有签名的方法的异步版本被映射为在失败时抛出异常。

关于c# - Xamarin iOS : Wait for HKHealthStore SaveObject to finish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129514/

相关文章:

c# - 类变量之间的歧义

ios - 当我使用 CNContactPicker 时隐藏联系人详细信息中的操作按钮

ios - UITextField 在输入数字的最后添加 3 个零阻止输入

c# - MonoTouch 中的 URL 转义/转义函数

xamarin - 向 Xamarin Forms iOS 中的条目添加底部边框,最后是图像

c# - 在应用程序配置文件中找不到名为 '' 的连接字符串

c# - 我应该将 Using 语句与 HttpClient 一起使用吗?

c# - 由于缺少 XSD 文件,无法反序列化 xml 文档

ios - 驻留内存不断增加

c# - 自动调整 WebView 大小以适合内容