14

我已通过 userDefaults 在我的应用程序及其 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 Today Extension 读取位于 Documents 中的容器应用程序文件?

谢谢!

4

1 回答 1

16

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

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

使用 containsURLForSecurityApplicationGroupIdentifier,您走在了正确的轨道上。您只需在应用程序和扩展程序中都使用它。它不访问文档文件夹,而是访问另一个容器。

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

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

于 2014-09-25T03:29:24.400 回答