在不同设备之间共享数据库[核心数据],而不仅仅是用户的设备

时间:2017-01-20 07:59:52

标签: ios swift core-data

在不同设备之间共享数据库的最佳方式是什么,这些设备不仅仅是用户的设备,而且可能是他朋友的电话。这意味着iCloud不是一个选择。

示例:我的所有数据都是应用程序用户特定的,所以基本上是:

  • 用户登录我的应用,做一些工作
  • 然后他可以在他的朋友电话上使用相同的acc登录,数据应该是相同的

是否有任何方法可以将整个用户特定数据库上传到某个在线存储提供程序(如firebase,...),然后在同一用户登录其他设备时将其下载到另一台设备并初始化核心数据堆栈?

或者它是与服务器同步数据的唯一方法,而不是预加载数据库?

2 个答案:

答案 0 :(得分:0)

您只需上传整个数据库文件,然后将其下载到其他设备上即可。但问题是可移植性。您需要确保两个设备都支持相同版本的数据库,以便它们兼容。将同一个东西移植到另一个平台又是一个不同的故事,但在不使用核心数据时可行。

然后存在冲突问题。想象一下,您忘记从第二台设备注销,并在一周后打开它,数据库意外同步回服务器。这将使您丢失在“主”设备上创建的所有数据。

所以一般情况下可以同步整个事情,但是你会遇到很多问题。您应该创建一个支持所有实体的服务器,并通过id工作(因此您知道该对象已被修改而未创建)并且修改了日期以便能够解决冲突。

答案 1 :(得分:-1)

在多台设备之间同步数据是使用Firebase之类的最大原因。这是其主要目的之一。您可以使用Firebase进行数据存储而不是Core Data,它会自动处理设备之间的同步。您不必编写代码来上传或下载任何内容,只需读取和编写Firebase数据即可处理同步。它支持用户帐户,因此如果用户登录其他设备,他们的数据会自动同步到该设备。当然,除了Firebase之外还有很多其他选项。

CloudKit还可以在不同设备之间进行同步,但它与手机上当前的iCloud帐户相关联。由于您需要应用内登录,因此效果不佳。