1

ファイルをiCloudに同期するための簡単なテストをしようとしています。これは私が持っている単純なスニペットです:

url = [[ubiquityContainerURL
       URLByAppendingPathComponent: @"Documents"]
       URLByAppendingPathComponent:@"test.txt"];

doc = [[CloudDocument alloc] initWithFileURL:url];

[doc saveToURL:[doc fileURL]
    forSaveOperation:UIDocumentSaveForCreating
    completionHandler:^(BOOL success) {
    }];

今、私は周りを見回そうとしました、そして他のチュートリアルでは、これは彼らがそれをする方法のようです。問題は、コードが実行されると、この例外がスローされることです([doc saveToURL]の行で):

'NSInvalidArgumentException'、理由:' * -[NSURL URLByAppendingPathExtension:]:コンポーネント、コンポーネント、またはpathExtensionをnilにすることはできません。

このロジックを実行するメソッドは、ここでユビキタスURLを取得した直後に呼び出されます。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
ubiquityContainerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

if (ubiquityContainerURL != nil)
     [self writeAllBytesToLocalFile:@""];
});

私はそれを修正するためにいくつかの異なることを試みましたが、それは起こり続けます。問題が何であるかについて何か考えはありますか?

お時間をいただきありがとうございます:)

4

1 に答える 1

1

大丈夫なので、私は問題が何であるかを理解しました。UIDocumentインスタンスドキュメントは、initializeメソッドの最終パスにファイル拡張子を追加しようとしていました。

残念ながら、UIDocumentサブクラスの-(NSString)savingFileTypeメソッドを誤った方法で上書きしたため、initializeメソッドにnil文字列が返され、ファイルパスにnilNSStringオブジェクトを追加しようとしました。

したがって、他の人がこの問題にぶつかった場合は、カスタムの上書きされたメソッドを削除して、問題が解決するかどうかを確認できます:)

于 2012-09-26T11:06:16.343 に答える