无法将文件保存到iOS 8上的App Groups

Hir*_*aku 9 iphone sandbox objective-c ios8 ios-app-group

我试图用来- (NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier在iOS 8 b4上的容器应用程序和扩展程序之间保存/加载文件.

这是代码:

NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID];
containerURL = [containerURL URLByAppendingPathComponent:[NSString stringWithFormat:@"Library/Caches/test.txt"]];
NSString* string = @"hihihihihi";
NSError* error;
[string writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",error);
Run Code Online (Sandbox Code Playgroud)

我将此代码放在扩展(自定义键盘)和容器应用程序中.当我在iOS模拟器上运行它时,它们都可以成功保存文件.但是在iOS设备上,扩展程序无法保存文件(而容器应用程序仍然可以)

当扩展程序试图保存文件时,控制台显示可可错误513.

2014-07-31 01:37:49.316 TestExtention [2359:288820] Error Domain = NSCocoaErrorDomain Code = 513"无法完成操作.(Cocoa error 513.)"UserInfo = 0x15df2100 {NSFilePath =/private/var/mobile/Containers/Shared/AppGroup/4FA2DA5E-89C3-4BC3-AA5B-DD869827C5E7/Library/Caches/test.txt,NSUnderlyingError = 0x15df1d90"操作无法完成.操作不允许"}

这是iOS 8扩展的限制吗?

Hir*_*aku 4

键盘扩展还有另一个限制。您应该在Info.plistRequestsOpenAccess中设置为然后它可以访问文件。YES

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html#//apple_ref/doc/uid/TP40014214-CH16-SW2