gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:57:15 24 4
gpt4 key购买 nike

我目前正在处理一个我无法单独解决的问题。我尝试将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com