我正在尝试编写iOS文档提供程序(iOS 9),并使用可用的Apple文档和代码作为说明点。但是,我遇到了一个奇怪的问题,我无法写入存储URL指向的位置。我正在测试导入操作。
以下是我为documentStorageURL获取的值:
file:///private/var/mobile/Containers/Shared/AppGroup/4F0A350D-8CD7-4A25-83ED-2C6120CD30FA/File%20Provider%20Storage/
但是当我尝试写入该位置时,我收到以下错误:
Error Domain=NSCocoaErrorDomain Code=4 "The file “test.txt” doesn’t exist." UserInfo={NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/4F0A350D-8CD7-4A25-83ED-2C6120CD30FA/File Provider Storage/test.txt, NSUnderlyingError=0x15f5ba010 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
奇怪的是,从containerURLForSecurityApplicationGroupIdentifier返回的containerURL实际上是不同的:
file:///private/var/mobile/Containers/Shared/AppGroup/A92110D1-D0B9-4DA7-8048-A4C63FF931D5/
我实际上能够写入后一个路径并将其读回来进行验证,但是当我调用dismissGrantingAccessToURL时,我收到一条错误,指出我返回的路径不是documentStorageURL。
以下是在文档提供程序的UI中按下按钮后调用的相关代码:
NSURL *container = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.jdw.DocumentProvider"];
NSLog(@"container url = %@", container);
NSLog(@"openDocument: storage uRL = %@", self.documentStorageURL);
NSURL* documentURL;
if (self.documentStorageURL != nil)
documentURL = [self.documentStorageURL URLByAppendingPathComponent:@"test.txt"];
else
documentURL= [container URLByAppendingPathComponent:@"test.txt"];
NSString *fileName = [documentURL path];
NSString *contents = @"this is a dynamically created text file";
NSLog(@"write to file = %@", fileName);
NSError *err;
[contents writeToFile:fileName
atomically:NO
encoding:NSStringEncodingConversionAllowLossy
error:&err];
NSLog(@"write: error = %@", err);
答案 0 :(得分:0)
我今天再次尝试了这一点并且神奇地工作了,没有任何重要的代码更改应该解决问题。我确实重置了iPhone。
我很确定这是iOS或XCode错误。作为参考,我使用的是XCode 7.2和iOS 9.2