2012-04-19 5 views
4

Я пытаюсь использовать UIDocument без iCloud, когда пользователь отключен iCloud. У меня есть следующий код:Не-iCloud использование UIDocument

NSURL *url; 
if (_isiCloudEnabled) { 
    NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 
    url = [ubiq URLByAppendingPathComponent:[NSString stringWithFormat:@"%f.adoc",[[NSDate date] timeIntervalSince1970]]]; 
} else { 
    NSString *homeDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *newFilePath = [homeDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%f.adoc", [[NSDate date] timeIntervalSince1970]]]; 
    url = [NSURL URLWithString:newFilePath]; 
} 

ASListyDocument *d = [[ASListyDocument alloc] initWithFileURL:url]; 

Этот код дает мне ошибку:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'must pass a valid file URL to -[UIDocument initWithFileURL:]' 

Любые идеи, почему? Я посмотрел URL-адрес в отладчике - он оказался действительным. Я попробовал запустить его в симуляторе и по телефону - такая же проблема!

Кстати, я работаю на устройстве с iOS 5.0, если это имеет значение.

ответ

11

Вполне вероятно URL вы строите с

NSString *homeDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *newFilePath = [homeDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%f.adoc", [[NSDate date] timeIntervalSince1970]]]; 
url = [NSURL URLWithString:newFilePath]; 

не на самом деле URL, а путь. Не забывайте, что действительный URL-адрес нуждается в схеме; для файлов это «файл: //». Попробуйте создать URL-адрес файла, используя [NSURL fileURLWithPath:]

url = [NSURL fileURLWithPath:newFilePath]; 
+0

Большое спасибо! Это исправило это! –

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