在Swift中将免费应用的核心数据导入付费应用

时间:2016-04-14 07:29:37

标签: ios swift core-data

我有免费版的应用和付费版本。我想让用户选择将现有数据从免费版本导入付费版本。

目前,数据存储在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?

2 个答案:

答案 0 :(得分:2)

我要做的是设置两个应用都可以访问的应用组。将您的数据放入应用程序组文件夹并从两个版本访问它。你不需要复制它,只要把它留在原地。

要做到这一点:

  1. 在"应用程序组"中设置应用程序组Xcode中目标设置的一部分。对两个版本使用相同的应用程序组。
  2. 使用以下命令查找应用程序组文件夹的位置:

    NSURL *groupURL = [[NSFileManager defaultManager]
        containerURLForSecurityApplicationGroupIdentifier:
            @"GROUP_NAME_HERE"];
    

    或者在Swift中:

    //swift
    let groupURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("groupIdentifier")
    
  3. 修改您的Core Data设置代码,将持久存储文件放在您在上一步中找到的目录中。

  4. 由于您有现有应用,因此您可能希望将现有数据移动到新的应用组目录中。您可以使用migratePersistentStore:toURL:options:withType:error:将现有商店从步骤2移至新位置。

    此时,两个应用程序都可以读写相同的目录。当人们购买付费应用时,数据确实已存在。

答案 1 :(得分:0)

关键字为应用间通信。一种直截了当的方法是编写URL方案处理程序。

来自:iPhone OS编程指南

  

应用仅与设备上的其他应用间接通信。您可以   使用AirDrop与其他应用程序共享文件和数据。你也可以   定义自定义URL方案,以便应用程序可以向您的信息发送信息   使用网址的应用。

     

注意:您还可以使用应用程序在应用程序之间发送文件   UIDocumentInteractionController对象或文档选择器。对于   有关添加文档交互支持的信息   控制器,请参阅iOS的文档交互编程主题。对于   有关使用文档选择器打开文件的信息,请参阅文档   选择器编程指南。

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html