从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/
我可以访问.json文件。有了这个safariContentBlocker容器? – JAck 2016-09-28 13:05:50
该链接没有关于在磁盘上使用共享容器的任何信息。它使用NSUserDefaults。 – funroll 2016-10-21 18:27:29