我正在为未来的项目试验HealthKit,目前正在实施单一卡路里计数器。一个简单的文本字段,用于输入卡路里量和进度指示器,显示卡路里/每日分配。没有数据模型(NSUserDefaults中除了calorieGoal),因为它完全建立在HealthKit之上。
进度指示器应该在每天启动和重置之间保持不变,但我很难以有效的方式执行此操作。我提出的两个解决方案是:
我觉得应该有一个更好的解决方案,但我无法想出一个。
答案 0 :(得分:1)
在内存中有一个数据模型。 您的模型包含保存数据的变量。
您的模型还负责处理数据的代码。这包括与HealthKit交互的代码。
您的模型对您的UI一无所知。它不会导入任何与UI相关的模块。它可能可以在iPhone和手表上运行。
由于您以异步方式获取数据,因此模型会在收到新数据时发送通知。
当有新数据时,您的UI代码会侦听通知。当您的UI收到此类通知时,它会重新显示主队列中的模型数据。
此方法适用于您的简单案例,适用于非常复杂的应用程序。
启动案例的用法示例:
当您的应用运行时更改hk数据(由其他应用更改或手表测量)时,此aporoach也会处理此案例。