2016-10-03 67 views
2

我們目前正在開發iOS10應用程序,其中包括「Messages Extension」。如何找到Apple App Group的共享目錄

要共享CoreDatas持久store.sqlite inbetween應用程序和擴展,我們正在使用共享「蘋果應用程序組」的目錄,這是工作正常。

現在,我們必須爲了調試的原因而在商店上手,並且無法找到目錄。 Apps容器目錄完全是空的,這很有意義。但是如何下載我們的數據庫?我們是否需要以某種方式將其以編程方式複製到可到達的地方?

概括起來:

  • 我們已經使用CoreData存儲model.sqlite在我們的共享目錄。
  • 一切正常運行。
  • 我們想存檔的是將數據庫下載到我們的電腦。

沒有共享目錄,我們可以簡單地使用Xcode-> Devices從設備下載App容器。但是,因爲我們使用共享目錄,.sqlite數據庫不在容器內。

問題: 我們如何從設備上下載.sqlite數據庫到我們的電腦?

+0

這將有助於看到一些代碼。例如,你怎麼知道共享容器確實是空的?你看過NSFileManager.defaultManager()。containerURLForSecurityApplicationGroupIdentifier(「group.etc.etc。」)嗎? – inwit

+0

共享容器不是空的。 Apps容器是。 – shallowThought

回答

2
let sharedContainerURL :NSURL? = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.etc.etc") // replace "group.etc.etc" with your App Group's identifier 
NSLog("sharedContainerURL = \(sharedContainerURL)") 
if let sourceURL :NSURL = sharedContainerURL?.URLByAppendingPathComponent("store.sqlite") 
{ 
    if let destinationURL :NSURL = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0].URLByAppendingPathComponent("copyOfStore.sqlite") 
    { 
    try! NSFileManager().copyItemAtURL(sourceURL, toURL: destinationURL) 
    } 
} 

像上面這樣會從應用程序組的共享容器中獲取文件到應用程序的Documents目錄。從那裏,你可以使用Xcode> Window> Devices將它傳送到你的電腦。

你也可以使用iTunes文件共享來檢索應用程序的文件目錄的文件在Info.plist文件中設置UIFileSharingEnabledYES後,但記住,這將暴露目錄的內容給用戶也是如此。儘管如此,開發/調試應該沒問題。

+0

我知道如何以編程方式實現它。無論如何接受答案。謝謝。 – shallowThought