2016-01-04 3 views
1

Я пытаюсь написать поставщика документов 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); 

ответ

0

Я попытался это снова сегодня, и все волшебным образом работало без каких-либо существенных изменений коды, которые должны устранили проблему. Однако я перезагрузил iPhone.

Я уверен, что это ошибка iOS или XCode. Для справки, я использую XCode 7.2 и iOS 9.2

 Смежные вопросы

  • Нет связанных вопросов^_^