我有免费版的应用和付费版本。我想让用户选择将现有数据从免费版本导入付费版本。
目前,数据存储在Core Data中。
我已经查看了互联网上的现有解决方案,现有解决方案建议使用包含数据的URL请求从免费应用程序向付费应用程序发出请求。 (例如http://mobileorchard.com/lite-to-paid-iphone-application-data-migrations-with-custom-url-handlers/)
所以我的问题是,如何在Swift中实现解决方案最好:
URL方法仍然是最好的方法吗? 有没有可用的代码示例?
我有一个想法是将整个数据库转换为JSON,然后使用JSON有效负载发出请求,并将其反序列化为另一方的核心数据。 Create json string from core data and vice versa?
答案 0 :(得分:2)
我要做的是设置两个应用都可以访问的应用组。将您的数据放入应用程序组文件夹并从两个版本访问它。你不需要复制它,只要把它留在原地。
要做到这一点:
使用以下命令查找应用程序组文件夹的位置:
NSURL *groupURL = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:
@"GROUP_NAME_HERE"];
或者在Swift中:
//swift
let groupURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("groupIdentifier")
修改您的Core Data设置代码,将持久存储文件放在您在上一步中找到的目录中。
由于您有现有应用,因此您可能希望将现有数据移动到新的应用组目录中。您可以使用migratePersistentStore:toURL:options:withType:error:
将现有商店从步骤2移至新位置。
此时,两个应用程序都可以读写相同的目录。当人们购买付费应用时,数据确实已存在。
答案 1 :(得分:0)
关键字为应用间通信。一种直截了当的方法是编写URL方案处理程序。
来自:iPhone OS编程指南
应用仅与设备上的其他应用间接通信。您可以 使用AirDrop与其他应用程序共享文件和数据。你也可以 定义自定义URL方案,以便应用程序可以向您的信息发送信息 使用网址的应用。
注意:您还可以使用应用程序在应用程序之间发送文件 UIDocumentInteractionController对象或文档选择器。对于 有关添加文档交互支持的信息 控制器,请参阅iOS的文档交互编程主题。对于 有关使用文档选择器打开文件的信息,请参阅文档 选择器编程指南。