保存到 watchOS 2 文档文件夹

Saving to watchOS 2 document folder

我的 iOS 应用程序将数据库发送到 WatchKit (watchOS 2)。在 WatchKit 中,我使用以下代码获取 watch 文档文件夹以将新文件保存在:

NSURL* fileURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"MyDatabase.sqlite"];

这导致 URL:

@"file:///var/mobile/Containers/Data/PluginKitPlugin/47E13085-9030-4ED2-906F-01CBA323F07A/Documents/MyDatabase.sqlite"

然而,当我调用函数时:

[[NSFileManager defaultManager] replaceItemAtURL:fileURL withItemAtURL:url backupItemName:nil options:0 resultingItemURL:nil error:&error];

它抛出一个错误说:

Error Domain=NSCocoaErrorDomain Code=512 "The file “MyDatabase.sqlite” couldn’t be saved in the folder “Documents”." Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “MyDatabase.sqlite”

如何找到允许我保存到的文件夹? 当然,这段代码在模拟器中运行良好,所以我假设我遗漏了一些不太明显的东西。

BR 弗雷德里克

我认为您的问题是 Apple Watch 扩展程序无法将文件保存到其文档目录。我能够使用应用程序组保存文件。将应用程序组添加到您的权利,然后您应该能够写入以下目录:

let path = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.my.cool.watch.app")