如何找到Apple App Group的共享目录

问题描述:

我们目前正在开发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

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