【问题标题】:Where should data reside in a watchOS app?数据应该存放在 watchOS 应用程序的什么位置?
【发布时间】:2019-06-04 16:15:52
【问题描述】:

我浏览了所有与创建 watchOS 应用程序、复杂性等相关的 Apple 文档和视频。仔细研究更新数据的流程和用户界面 - 但有一件事我没有弄清楚。

在所有相关视频和文档中,都说明一旦 URLSession 下载任务结束,应用程序应更新其数据模型并请求系统安排快照更新。

我的问题是:数据模型应该在哪里存储/持久化?这甚至是必要的吗?我应该使用核心数据吗?内存中的单例对象? SQLite?用户默认值?一个简单的 JSON 文件?在为 watchOS 编写应用程序时,保留数据模型的首选方式是什么?

我希望存储一组非常简单的对象(例如,联系人列表,其中每个联系人都有姓名、地​​址和电话号码,所有这些都表示为 String 对象)

这是 WWDC 2016 会议的链接,名为“让您的手表应用程序保持最新”,它解释了我提到的大部分任务和最佳实践 - WWDC 2016: Keeping Your Watch App Up to Date

【问题讨论】:

  • 您是要创建一个独立的手表应用程序,还是一个带有 iPhone 配套应用程序的手表应用程序?
  • 一个手表应用程序有一个配套的 iPhone 应用程序,但我想保留的数据被用于填充手表应用程序的复杂功能的时间线

标签: ios swift watchkit apple-watch watchos-2


【解决方案1】:

将 watchOS 的持久数据存储在云端或配套的 iPhone 应用中通常是最佳做法。我的猜测是,“数据模型”所指的来源是活动存储中的数据,即当应用程序打开时。如果您不需要,您不应该在本地存储冗余数据,尤其是。不适用于 watchOS。

话虽如此,watchOS 确实可以访问 CoreData 和 NSCoding 方法。我不确定 NSUserDefaults - 但无论如何我都不会使用它来存储数据。 (这也是 iOS 的一般原则:CoreData 用于数据,UserDefaults 用于用户偏好。)Here 是一个类似的线程,解释了这是如何完成的。

但我强烈建议在手表上存储数据之前找到替代方案 - 那里没有大量可用的持久存储空间。

编辑:查看 Apple 的 WatchKit docs,了解有关您的选择的更多详细信息。

【讨论】:

  • 您建议将用于填充复杂功能时间线的信息存储在哪里?这甚至是必要的还是系统正在处理的事情?
  • 视情况而定。您可以在配套的 iPhone 应用程序上生成复杂功能数据,并使用 WatchConnectivity 框架将其发送到手表。但根据文档you are only allowed to make up to 50 of these transfers per day。此外,如果您不希望您的手表应用程序依赖于您的配套应用程序来运行,我建议使用 URLSession 和私有服务器或 CloudKit API 进行存储。 (编辑:在上面添加了一个链接)
  • 我同意一切,如果这是一个伴侣,这应该只是一个缓存,而不是事实的来源(使用另一个事实来源并与之同步)。我会警告CoreData。如果你能避开那头野兽,最好不要使用它。这取决于数据结构和大小。如果数据大小不在兆字节范围内,结构相对简单,而且大多是只读的,可以使用简单的JSON文件或plist文件等更简单的东西。
  • 我最终决定使用一个简单的临时 JSON 文件,这样扩展程序的复杂数据源就能够访问使用后台 URLSession 获取的数据...填充复杂时间线后,文件将被删除- 如果您对流程有任何见解可以分享 - 请分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多