【问题标题】:What is the best method to save Objects local data in Firemonkey mobile app?在 Firemonkey 移动应用程序中保存对象本地数据的最佳方法是什么?
【发布时间】:2019-01-21 21:35:51
【问题描述】:

在我的应用程序中,我收到了来自 RESTServer 的 JSON 响应。然后我将它们转换成数据对象,将它们存储在 TObjectList 中,然后将列表绑定到 TListBindSourceAdapter 进行显示。

我想将 TObjectList 数据保存到本地存储。我的问题是:保存它的最佳方法是什么?

我尝试创建 一个 SQLite DB,我可以将记录保存到 SQLite DB,但它需要在代码中手动将我的 TObjectList 转换为 DB 记录,当我检索时我需要将它转换回数据对象。它涉及更多的开发工作。

或者我应该使用 SaveState 吗?我可以使用 SaveState 将本地数据保存为字符串。我可以尝试使用 TJson.ObjectToJson 将数据对象转换为 JSON 并保存。为此,我可以将 TObjectList 保存到 Array 中,将其存储到数据对象中并转换为 JSON。检索时我可以使用 TJson.JsonToObject 转换回来。

或者有更好的方法吗?在 Firemonkey 中保存本地数据有通用方法吗?有没有类似于 Angular 中的状态管理的东西?

【问题讨论】:

  • 本地缓存 HTTP 响应可能是另一种选择
  • 如果您需要持久存储,那么 SQLite 可以使用。您可以从 JSON 直接存储到 TDataSets。
  • 也许你可以直接保存你的json响应?因为您已经解析了它们,所以当您从磁盘中获取它们时无需重做该过程

标签: delphi firemonkey


【解决方案1】:

最后,我使用 SaveState 将数据保存到本地。由于我尝试并发现使用 SaveState 开发起来更快,更容易开发。

使用 saveState 而不是保存到本地数据库的缺点是,SaveState 仅在应用程序表单关闭时发生,或者在移动应用程序中,当应用程序停用时发生。如果移动应用程序中的应用程序被直接杀死而不是停用,则不会调用 SaveState 并且可能会丢失数据。相反,可以随时手动调用保存到本地数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多