2016-04-14 31 views
2

我有一个免费版本的应用程序和付费版本。我想让用户选择将现有数据从免费版本导入付费版本。从Swift免费应用程序导入核心数据到付费应用程序

当前数据存储在核心数据中。

我已经查看了互联网上的现有解决方案,所以现有的解决方案建议使用包含数据的URL请求从免费应用程序向付费应用程序发出请求。 (例如http://mobileorchard.com/lite-to-paid-iphone-application-data-migrations-with-custom-url-handlers/

所以我的问题是,如何最好以实现迅捷的解决方案:

是该URL方法仍是最好的方法呢? 是否有任何可用的代码示例?

我的一个想法是将整个数据库转换为JSON,然后用JSON负载发出请求并将其反序列化到Core Data的另一端。 Create json string from core data and vice versa?

回答

2

我会做的是建立两个应用程序可以访问应用程序组。将数据放入应用程序组文件夹并从两个版本访问它。您不需要复制它,只需将它保留在原来的位置即可。

要做到这一点:

  1. 建立一个应用程序组在Xcode目标设置的“应用程序组”部分。两个版本都使用相同的应用程序组。
  2. 查找应用程序组文件夹与位置:

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

    还是在斯威夫特:

    //swift 
    let groupURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("groupIdentifier") 
    
  3. 修改你的核心数据设置代码把持久性存储文件在你找到的目录在前面的步骤中。

由于您拥有现有应用程序,因此您可能希望将现有数据移动到新的应用程序组目录中。您可以通过使用migratePersistentStore:toURL:options:withType:error:将现有商店移动到步骤2中的新位置来执行此操作。

此时,两个应用程序都可以读取和写入相同的目录。当人们购买付费应用程序时,数据实际上就已经存在了。

+0

伙计这是真棒,如此干净,如此简单 - 一个优雅的解决方案。我会添加快速的等效物! –

+0

@PhilHudson感谢编辑的建议,我不知道为什么人们拒绝它。 –

+0

应用程序组工作得很好(对于尚未启动的应用程序)。我正在研究迁移数据(以及存储在文档目录中的图像)是否有任何Swift中的示例或经验,以及最佳实践/方法? :)任何提示赞赏! –

0

关键字是应用程序间通信。一种简单的方法是编写一个URL方案处理程序。

来源:iPhone OS编程指南

应用交流只能间接地与设备上的其他应用程序。您可以使用AirDrop 与其他应用程序共享文件和数据。您还可以 定义自定义网址方案,以便应用可以使用网址向您的 应用发送信息。

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

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

相关问题