2012-01-29 9 views
6

航空機モードまたはネットワークアクセスが利用できないその他の状態のときは、はNSFileManagerのURLForUbiquityContainerIdentifier: return nilを呼び出しますか?URLForUbiquityContainerIdentifierはネットワークアクセスが利用できない場合はnilを返しますか?

Aは、フォローアップこれに疑問がある:URLForUbiquityContainerIdentifier:にこの呼び出しがnilを返すのではなく、ネットワークアクセスが利用できない場合、有効なURLを返していない場合これはオフラインでクラウドベースの文書にアクセスするための方法ですか?

アップルのdocsは、iCloudが設定されていないか、有効になっていない場合はnilを返すと述べています。ネットワークアクセスが利用できない場合、何が起こるかは言及していません。

私はこれを実際にテストしますが、実際のデバイスでこれをテストしなければならないとわかっているから、デバイスのテストは現時点では不可能です。ありがとうございました!

答えて

5

UbiquityContainerは、iCloudから要求したドキュメントを含むローカルストレージコンテナです。このコンテナは、ネットワークが接続されていないときに使用できます。次の例を使用して

NSURL *ubiq = [[NSFileManager defaultManager] 
    URLForUbiquityContainerIdentifier:nil]; 
if (ubiq) { 
    NSLog(@"iCloud access at %@", ubiq); 
    // TODO: Load document... 
} else { 
    NSLog(@"No iCloud access"); 
} 

電話機が飛行機モードであっても、ファイルとubiquityコンテナにアクセスできます。ネットワーク接続がicloudデーモンを復元すると、バックグラウンドでも自動的にファイルが同期されます。

ここには、iCloudセットアップに関する素晴らしい記事があります。 http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1

+1

ありがとうございました!私は数日(これは私がハハを認めて喜んでいない)の間にこの周りに私の頭をラップしようとしてきました。私の混乱は、ubiquityContainerがクラウド内の場所であり、ローカルストレージコンテナではないと思ったという事実に基づいていたと思います。これは私が把握していなかった基本的な概念でした。再度、感謝します! –

+0

確かに、私は実際にはiCloudのUbiquityContainersで別に答えました。 NSFileManagerがブロックされ、別のキューで実行するように推奨されています。この回答を確認してください:http://stackoverflow.com/questions/9050359/should-urlforubiquitycontaineridentifier-be-called-in-a-thread-outside-the-main/9051105#9051105 – MobileOverlord

+1

ブロックについての良い点 - 面白いですアップルのサンプルドキュメントや上で参照したWebサイトのコードを見ると、URLForUbiquityContainerIdentifierの呼び出しがメインスレッドにあります。 Appleが潜在的な問題であれば、これを書き留めておくと思いますよね? –

関連する問題