从Today Extension中访问应用程序文档文件夹

问题描述:

我已经通过userDefaults在我的应用程序和它的Today Extension之间成功共享数据,但是当涉及位于应用程序的Documents文件夹中的实际文件时,我遇到了麻烦。从Today Extension中访问应用程序文档文件夹

当我使用此代码在我的应用程序:

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 Today扩展程序读取位于文档中的容器应用程序的文件?

谢谢!

您无法从扩展程序访问包含应用程序的文档文件夹。

但是,您可以创建一个共享容器,该容器可以通过包含应用程序及其所有扩展来访问。

您正在使用containsURLForSecurityApplicationGroupIdentifier进行正确的跟踪。你只需要在应用程序和扩展中使用它。它不访问文档文件夹,而是访问另一个容器。

如果要更新现有的应用程序已经在文件夹被存储数据,您需要将数据移动到S8的日常扩展

退房此链接。 http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/

+0

我可以访问.json文件。有了这个safariContentBlocker容器? – JAck 2016-09-28 13:05:50

+2

该链接没有关于在磁盘上使用共享容器的任何信息。它使用NSUserDefaults。 – funroll 2016-10-21 18:27:29