无法写入iOS文档提供程序中的路径

时间:2016-01-04 19:50:53

标签: ios file mobile ios-extensions

我正在尝试编写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);

1 个答案:

答案 0 :(得分:0)

我今天再次尝试了这一点并且神奇地工作了,没有任何重要的代码更改应该解决问题。我确实重置了iPhone。

我很确定这是iOS或XCode错误。作为参考,我使用的是XCode 7.2和iOS 9.2