我已经通过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/