ios8 – 从Today Extension访问应用文档文件夹

我已经通过userDefaults成功地共享了我的App和它的Today Extension之间的数据,但是当涉及应用程序的Documents文件夹中的实际文件时,我遇到了麻烦.

当我在我的应用程序中使用这个代码:

var documentsDir:NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0] as String

它返回:

/var/mobile/Containers/Data/Application/296494AA-946C-40E0-8646-F0895E131DCB/Documents/

但在扩展中它返回:

/var/mobile/Containers/Data/PluginKitPlugin/AB484342-537A-4CE7-9EF3-F2CAE352C8A3/Documents/

显然,文件不存在.

我读了我应该使用的地方:

let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier("group.com.company.app")
let filePath = containerURL.path

但它返回:

/private/var/mobile/Containers/Shared/AppGroup/CD7CF610-EB5F-4246-8D30-D7F8BFA6A219

哪个也不行.

如何让我的iOS 8今天扩展读取它的容器应用程序的文件中的文件?

谢谢!

解决方法

您不能从扩展名访问主机应用程序的文档文件夹.

但是,您可以创建一个可由主机应用程序及其所有扩展程序访问的共享容器.

您使用containsURLForSecurityApplicationGroupIdentifier处于正确的轨道.你只需要在应用程序和扩展名中使用它.它不会访问文档文件夹,而是另一个容器.

如果您正在更新已将文档数据存储在文档夹中的现有应用程序,则需要将数据移至s8-today-extension

看看这个链接.
http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...