在多个Swift应用之间共享数据库

use*_*025 5 realm nsfilemanager ios swift ios-app-group

我需要能够拥有3个可以相互通信的快速应用程序。将应用程序1视为与服务器通信并将信息存储在本地数据库中的基本应用程序,而应用程序2和3需要读取(并可能写入)在应用程序1中创建的该数据库。

从网上看,“应用程序组”似乎可以实现。如果所有3个应用程序都在同一个应用程序组下,它们会自动具有一个“共享文件夹”,我可以在其中创建和/或存储Realm数据库吗?应用程序2和3是否会使用NSFileManager与该共享文件进行交互?我似乎找不到实际的例子。

Bri*_*den 1

您需要一个中央数据库来从多个客户端应用程序读取和写入,这就是最简单的 API。换句话说,您的应用程序需要一个 API。您可能会认为这比共享文件夹和共享 Realm DB 更具挑战性,但事实并非如此,您实际上通过尝试重新发明 N 个移动应用程序如何与他人共享数据的方式使问题变得更加复杂。彼此之间,N 个应用程序都驻留在同一设备上并不重要,在 iOS 中,一个应用程序位于沙箱中,而您试图规避这一点。

我的猜测是,您解决此问题的方法主要是使用 Realm DB,但 Realm DB 可能不是完成这项工作的正确工具,因为 Realm DB 是一个为一个应用程序提供服务的本地数据库,如果 Realm DB 被设计为与多个应用程序一起使用将是一个 API 工具,例如 Firebase 或 Amazon S3。

您需要创建一个 API,并且该 API 只有一个数据库支持它。

例如,App1 需要保存一张图片,App2 需要能够检索和查看该图片。

您的 API 将有一个名为:

SavePicture(byte[] picture)
Run Code Online (Sandbox Code Playgroud)

现在App1通过调用你的API来保存图片,并且图片被保存在数据库中或服务器硬盘上,无论哪种方式数据库中都有保存图片的记录。

现在App2想要新图片,假设App2上有一个刷新按钮,刷新按钮触摸调用你的API,另一个方法称为

[byte[]] GetPictures()
Run Code Online (Sandbox Code Playgroud)

APIGetPictures方法返回一个 byte[] 数组,每个数组都是 App2 可以显示的图像。

您可能想查看一下Firebase,这似乎是不熟悉构建 API 的人们使用的第三方工具,或者学习如何使用 PHP、Ruby on Rails、ASP.NET Web API、Python 等构建 API。数据库可以是 MySQL、PostgreSQL、Sql Server、MongoDB、RavenDB 等。