我的iOS应用将数据库发送到WatchKit (watchOS 2)
。在WatchKit
我使用以下代码获取监视文档文件夹以将新文件保存在:
NSURL* fileURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"MyDatabase.sqlite"];
这会产生一个网址:
@"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];
它抛出错误说:
错误Domain = NSCocoaErrorDomain Code = 512"文件“MyDatabase.sqlite”无法保存在“Documents”文件夹中。" 错误域= NSCocoaErrorDomain代码= 513"您无权保存文件“MyDatabase.sqlite”
如何找到我可以保存的文件夹? 当然这个代码在模拟器中运行良好,所以我假设我错过了一些不太明显的东西。
BR 弗雷德里克
答案 0 :(得分:1)
我相信您的问题是Apple Watch扩展程序无法将文件保存到文档目录中。我可以使用应用程序组保存文件。将应用程序组添加到您的权利中,然后您应该能够写入以下目录:
let path = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.my.cool.watch.app")