2012-04-19 25 views
4

我想在沒有iCloud的情況下使用UIDocument,當用戶禁用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

這可能是因爲您與

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需要一個方案;對於文件,這是「file://」。嘗試建立文件的URL使用[NSURL fileURLWithPath:]

url = [NSURL fileURLWithPath:newFilePath]; 
+0

非常感謝!這解決了它! – 2012-04-19 12:16:28

相關問題