Xamarin.iOS 应用中的数据存储简介

何时使用数据库

虽然移动设备的存储和处理功能正在增加,但手机和平板电脑仍落后于相应的台式电脑和笔记本电脑。 因此,值得花一些时间为应用规划数据存储体系结构,而不是仅仅假设数据库一直是正确的答案。 有多种不同的选项符合不同的要求,例如:

  • 首选项 – iOS 提供了一种内置机制,用于存储简单的键值对数据。 如果要存储简单的用户设置或小块数据(如个性化信息),可以使用平台的本机功能来存储此类信息。 对于 iOS,还可以对这些数据使用 iCloud 同步,同时为具有多个设备的用户进行备份和同步。
  • 文本文件 - 用户输入或下载内容(如 HTML)的缓存可以直接存储在文件系统上。 使用适当的文件命名约定来帮助组织文件和查找数据。
  • 序列化数据文件 – 对象可以在文件系统上保留为 XML 或 JSON。 .NET Framework 包含使对象序列化和反序列化更轻松的库。 使用适当的名称来组织数据文件。
  • 数据库 – SQLite 数据库引擎在 iOS 上提供,可用于存储需要查询、排序或以其他方式操作的结构化数据。 数据库存储适用于具有许多属性的数据列表。
  • 图像文件 – 虽然可以将二进制数据存储在移动设备上的数据库中,但建议将它们直接存储在文件系统中。 可以根据需要将文件名存储在数据库中,以将图像与其他数据相关联。 在处理大型图像或大量图像时,一种好的做法是规划缓存策略,以删除不再需要的文件,从而避免占用用户的所有存储空间。

如果数据库是应用的正确存储机制,本文档的其余部分将讨论如何在 Xamarin 平台上使用 SQLite。

使用数据库的优点

在移动应用中使用 SQL 数据库有很多优点:

  • SQL 数据库允许高效存储结构化数据。
  • 可以使用复杂的查询提取特定数据。
  • 可以对查询结果进行排序。
  • 可以聚合查询结果。
  • 具有现有数据库技能的开发人员可以利用其知识来设计数据库和数据访问代码。
  • 可以在移动应用程序中重复使用(全部或部分)连接的应用程序的服务器组件中的数据模型。

SQLite 数据库引擎

SQLite 是 Apple 为其移动平台采用的一种开源数据库引擎。 SQLite 数据库引擎内置于 iOS,因此开发人员无需进行额外的工作即可利用它。 SQLite 非常适合跨平台移动开发,因为:

  • 该数据库引擎较小、速度快且易于移植。
  • 数据库存储在单个文件中,便于在移动设备上进行管理。
  • 文件格式易于跨平台使用:无论是 32 位还是 64 位,以及无论是大端系统还是小端系统。
  • 它实现了大部分 SQL92 标准。

由于 SQLite 设计得小巧快速,因此在其使用方面有一些注意事项:

  • 不支持某些 OUTER 联接语法。
  • 仅支持表 RENAME 和 ADDCOLUMN。 不能对架构进行其他修改。
  • 视图是只读视图。

可以在网站 SQLite.org 上了解有关 SQLite 的详细信息,但是,将 SQLite 与 Xamarin 配合使用所需的所有信息都包含在本文档和相关示例中。 SQLite 数据库引擎内置于所有版本的 iOS。 虽然本章未介绍,但 SQLite 也可用于 Windows Phone 和 Windows 应用程序。

Windows 和 Windows Phone

SQLite 也可以在 Windows 平台上使用,尽管本文档未介绍这些平台。 在 Tasky 案例研究中阅读详细信息,并查看 Tim Heuer 的博客