如何找到Apple App Group的共享目录
我们目前正在开发iOS10应用程序,其中包括“Messages Extension”。如何找到Apple App Group的共享目录
要共享CoreDatas持久store.sqlite
inbetween应用程序和扩展,我们正在使用共享“苹果应用程序组”的目录,这是工作正常。
现在,我们必须为了调试的原因而在商店上手,并且无法找到目录。 Apps容器目录完全是空的,这很有意义。但是如何下载我们的数据库?我们是否需要以某种方式将其以编程方式复制到可到达的地方?
概括起来:
- 我们已经使用CoreData存储model.sqlite在我们的共享目录。
- 一切正常运行。
- 我们想存档的是将数据库下载到我们的电脑。
没有共享目录,我们可以简单地使用Xcode-> Devices从设备下载App容器。但是,因为我们使用共享目录,.sqlite数据库不在容器内。
问题: 我们如何从设备上下载.sqlite数据库到我们的电脑?
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
文件中设置UIFileSharingEnabled
到YES
后,但记住,这将暴露目录的内容给用户也是如此。尽管如此,开发/调试应该没问题。
我知道如何以编程方式实现它。无论如何接受答案。谢谢。 – shallowThought
这将有助于看到一些代码。例如,你怎么知道共享容器确实是空的?你看过NSFileManager.defaultManager()。containerURLForSecurityApplicationGroupIdentifier(“group.etc.etc。”)吗? – inwit
共享容器不是空的。 Apps容器是。 – shallowThought