5

当用户禁用 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 的设备上运行,以防万一。

4

1 回答 1

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 需要一个方案;对于文件,这是“file://”。尝试使用构建文件 URL[NSURL fileURLWithPath:]

url = [NSURL fileURLWithPath:newFilePath];
于 2012-04-19T12:13:58.970 回答