Я пытаюсь написать поставщика документов iOS (iOS 9) и использовал отображаемую документацию и код Apple в качестве контрольной точки. Тем не менее, у меня возникает странная проблема, когда я не могу написать адрес, на который указывает URL-адрес хранилища. Я тестирую операцию импорта.Не удается написать путь к поставщику документов iOS
Вот значение я получаю для 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"}}
Одна вещь, которая является нечетности контейнерURL, возвращаемый из контейнераURLForSecurityApplicationGroupIdentifier, фактически отличается:
file:///private/var/mobile/Containers/Shared/AppGroup/A92110D1-D0B9-4DA7-8048-A4C63FF931D5/
Я действительно могу написать этот последний путь и прочитать его обратно, чтобы проверить, но затем, когда я вызываю rejectGrantingAccessToURL, я получаю сообщение об ошибке, в котором говорится, что путь, который я вернул, не является documentStorageURL.
Вот соответствующий код, который вызывается после того, как я нажимаю кнопку в интерфейсе поставщика документа:
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);