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 に答える