2016-11-30 52 views
0

我已经创建了核心数据的应用程序。但现在,我想,如果用户丢失或替换他们的设备会发生什么。假设他们得到一个新的并重新安装应用程序。将数据保存在iPhone之外

什么是最好的和简单的方式来获取我以前的数据存储在他的旧设备的核心数据。

您能否介绍一下您的想法?

+0

这就是人们(应该)将他们的设备备份到iTunes/iCloud的原因。当他们获得新设备时,他们可以恢复设备备份,并将所有应用程序恢复为全部数据。 – rmaddy

+0

如果他们这样做,他们会得到什么在核心数据返回是正确的? –

+0

他们应该,这是设备备份的要点。它是在备份时取回设备上的每一个位。尝试使用您的开发设备之一。 – rmaddy

回答

1

对于单个设备和任何替换设备(如果损坏或丢失),仅备份到iTunes或iCloud就足够了。然后,如果/需要,您可以从该备份进行恢复。这适用于任何应用程序数据,而不仅仅是CoreData。

您的应用程序还可能包含将CoreData持久性存储文件复制到其他位置的功能,然后从其他位置加载它。这通常只是一个单独的SQLite数据库文件,并且可以直接在设备之间进行复制。例如,将其复制到'文档'目录,然后通过iTunes抓取或通过电子邮件发送。然后,您可以从某处读取它并将其写入持久性存储文件位置(而CoreData不使用它)。这种方法对于只有一个独立于您在iCloud/iTunes上获得的整个设备备份的应用程序的时间点数据备份很有用。它还使用户能够将其整个应用程序数据集发送给其他用户(如果有任何用途的话),或者将应用程序数据恢复到某个时间点,而无需恢复包括所有其他应用程序在内的整个设备。

所以我希望能回答你原来的问题。为您的后续查询中的评论...

对于多个设备同时共享相同的数据,有CloudKit:https://developer.apple.com/icloud/。但是,我不知道这是否适用于CoreData(我怀疑不是)。 (请注意,CoreData自己的iCloud同步在iOS 10中已弃用。)

还有第三方替代方法,如Realm:https://realm.io/。 Realm被很多开发人员强烈推荐,并且是跨平台的。但它是CoreData的替代品,而不是与它兼容(所以不太符合你的要求)。对于设备间的数据同步,Realm将要求您在Mac OS X或Linux机器上设置您自己的数据同步服务器('Realm Mobile Platform'),您的所有用户的设备都需要通过该设备访问互联网在任何时间。

另外,你可以推出自己的解决方案,但你为什么?

+0

我可以在模拟器中使用cloudkit吗?没有任何设备 –

+0

最好问一个单独的问题,我认为。取决于您是否可以使用iCloud帐户设置模拟器,但我没有看过。检查模拟器上的“设置”应用程序。 –

0

这就是iCloud的用途。正如rmaddy在评论中所说的那样,您可以将核心数据库备份到iCloud。我没有这样做,但我已经读过它了。

1

一个非常简单的方法是使用iCloud API并将所有数据存储在iCloud存储上。这类应用程序非常安全可靠。

+0

任何使用iCloud API的好教程? –

+0

我认为这个链接会帮助你.. http://www.appcoda.com/icloud-programming-ios-intro-tutorial/ –