2016-04-14 57 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

相關問題