当前位置: 首页 > 面试题库 >

如何为我的应用制作离线数据库?

梁丘飞鸾
2023-03-14
问题内容

我在使用RestAPI和保存脱机数据时遇到问题。是否有人对此有最好的想法。

我想将服务器的JSON响应保存在本地数据库中,并在没有互联网可用时使用该数据。像Firebase实时数据库。


问题答案:

我认为您需要的是一种将数据持久保存到应用程序中的机制。有几种方法可以实现此目的。尽管它可能太宽泛,无法提供详细的答案,但您可能需要检查以下选项:

数据库:

  • 核心数据

核心数据是Apple在macOS和iOS操作系统中提供的对象图和持久性框架。它是在Mac OS X 10.4 Tiger和带有iPhone SDK
3.0的iOS中引入的。它允许将由关系实体-
属性模型组织的数据序列化为XML,二进制或SQLite存储。可以使用代表实体及其关系的高级对象来操纵数据。Core
Data管理序列化版本,提供对象生命周期和对象图管理,包括持久性。核心数据直接与SQLite交互,从而使开发人员与基础SQL隔离。


维基百科资源。

编程指南。

  • SQLite的 -附包装如 SQLite.swift -

SQLite是C编程库中包含的关系数据库管理系统。与许多其他数据库管理系统相比,SQLite不是客户端服务器数据库引擎。而是将其嵌入到最终程序中。

维基百科资源。

  • 领域

Realm是一个开源对象数据库管理系统,最初用于移动设备(Android / iOS),也可用于Xamarin或React
Native等平台以及包括桌面应用程序(Windows)在内的其他平台,并已获得Apache许可。

维基百科资源。

其他选择:

  • UserDefaults

UserDefaults类提供了用于与默认系统进行交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的首选项。例如,您可以允许用户指定其首选的度量单位或媒体播放速度。应用程序通过将值分配给用户默认数据库中的一组参数来存储这些首选项。这些参数称为默认值,因为它们通常用于确定应用程序在启动时的默认状态或默认情况下的行为方式。

  • 将数据保存到 plist 文件:

在macOS,iOS,NeXTSTEP和GNUstep编程框架中,属性列表文件是存储序列化对象的文件。属性列表文件使用文件扩展名.plist,因此通常称为p列表文件。

属性列表文件通常用于存储用户的设置。它们还用于存储有关包和应用程序的信息,这是旧Mac OS中的资源派生所完成的任务。

  • 将数据保存到 json 文件中:

在计算中,JavaScript Object Notation或JSON是一种开放标准的文件格式,它使用人类可读的文本来传输由属性-
值对和数组数据类型(或任何其他可序列化的值)组成的数据对象。它是一种非常常见的数据格式,用于异步浏览器-
服务器通信,包括在某些AJAX风格的系统中替代XML。

维基百科资源。



 类似资料:
  • 影像拼接        LocaSpaceViewer可对tif格式、grd格式和img格式的数据进行拼接,在弹出的对话框中点击添加数据,可以添加单个的影像数据,点击添加目录,可以同时添加整个文件夹的多个影像数据,这里我们选择单个添加数据,依次将已经下载好的数据(tif格式)添加进来。        点击删除数据或删除所有,可以选择对话框中已添加的数据或全部数据进行删除。        添加完成后

  • 请参阅下面的代码: \n不在这方面工作

  • 我正在考虑使用React将我的web应用程序实现为PWA。我想要实现的主要特性是缓存从API获取的JSON数据,以便它在脱机模式下工作。然而,我不知道如何在React中对服务人员进行编码。

  • 我第一次在firebase上工作,了解firebase的脱机功能,测试了两个场景: 设想1(工作): > 按后退按钮(关闭应用程序) 场景2(不工作): 脱机模式,将数据写入firebase数据库 关闭应用程序 从后台删除应用程序(删除应用程序) 已联机,未添加数据 我加了一行: 如何处理场景2?我需要通过本地数据库处理这个场景吗?

  • 我使用Maps API v2与Google Maps制作了一个android应用程序,该应用程序从MySQL数据库获取PHP生成的JSON数据。当电话连接到Internet时,这非常有效。我的问题是什么是最好的方法,使应用程序也可以离线使用。我只需要一个很小的离线可用性区域,我可以将JSON下载到电话存储并解析它,但映射部分是我的主要关注点。据我所知,这在谷歌地图上是不可能的,但有什么其他选择呢?

  • 使用 python 把上面的 json 转成点图,把 json 是 list[list[dict]] 的,把 dict 里面的 pts 作为纵坐标,把 list 的 index 作为横坐标 然后我写了下面的代码 渲染出来的图如下 对于上面的图,我希望可以输出 [0,900]->[0,900] 和 [900,1550]->[1200,1550] 对于上面的图,我希望可以输出 [0,900]->[0,