2012-06-13 13 views
11

NSUbiquitousKeyValueStoreを使用して、一部の設定データをiCloudに同期しています。ユーザーが「設定アプリケーション」でiCloudの「文書&データ」アイテムを無効にすると、NSUbiquitousKeyValueStoreはデータをiCloudと同期できないことが判明しました。だから、私が最初にこの設定がグーグルon.After切り替えられたかどうかを確認したい、私はこのコードスニペットを見つけました:NSUbiquitousKeyValueStoreだけを使用するときにiCloudがユーザのデバイスで有効になっているかどうかをプログラミングで検出するにはどうすればよいですか?

NSURL *ubiq = [[NSFileManager defaultManager] 
        URLForUbiquityContainerIdentifier:nil]; 
    NSLog(@"url=%@",ubiq); 
    if (!ubiq) { 
     UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [av show]; 
     return; 

    } 

私が知りたい、これは私が使用している場合でも、検出するための唯一の方法であるかどうかでありますNSUbiquitousKeyValueStore(iCloudドキュメントストレージではありません)。よりよい選択肢がありますか?

答えて

12

ユーザーがiCloudアカウントを持っていない場合でも、基本的にNSUbiquitousKeyValueStoreが利用可能です(この場合、NSUbiquitousKeyValueStoreは単純なローカルストレージです)。一般的に、設定されたiCloudアカウントがある場合は、自分やユーザーに尋ねる必要はありません。

本当に知りたいのなら、iOS 5では、あなたが言及しているのが唯一の解決策です。

+0

あなたの答えは、「このクラスをオフラインのときのアプリケーションの動作に不可欠なデータに使用しないようにする」というドキュメントと矛盾しているようです。私はすでにそれについて[質問](http://stackoverflow.com/q/23662856/251760)を投稿しました。あなたはそれに答えることができるでしょうか? – Jonathan

+0

これは、あなたのローカル真実ではなく、あなたのデバイス間のシンプルな同期通信チャネルのために、このストアに頼るべきではないということです。 – Julien

+0

ありがとう!私は私の質問にあなたの返信を[回答](http://stackoverflow.com/a/26556553/251760)にしました。 (答えを自分で作成したいのであれば、喜んで削除したいと思います) – Jonathan

3

ドキュメントが更新されている場合、私は知らないが、Appleは今言っている:

をiCloudには、特に起動時に、利用可能かどうかを判断するには、代わりにubiquityIdentityTokenプロパティの 値をチェック

ubiquityIdentityTokenURLForUbiquityContainerIdentifierの両方についてNSFileManagerを参照してください。

また、アップルはURLForUbiquityContainerIdentifierが比較的遅くなる可能性があり、そのチェックは比較的速いと言っていることに注意してください。ubiquityIdentityToken

これはiOS6以上です。

+1

iCloudドキュメントを使用する場合は、iCloudのKey-Valueストレージに関する質問に該当します。 –

+0

Hmmm。私は何かを得ていないのですか? ubiquityIdentityTokenのドキュメントでは、iCloudドキュメントに固有のことを示唆していません。「iCloudが現在利用可能な場合、このプロパティ[ubiquityIdentityToken]には現在のユーザーの身元を表す不透明なオブジェクトが含まれています。ログインユーザーでない場合、このプロパティの値はnilです。 –

+1

Julienは言ったように、(ubiquityIdentityTokenがnilであっても)キー値の格納は常に利用可能です。ユーザーが[設定]> [iCloud]> [ドキュメントとデータ]を無効にしているかどうかを確認します。 –

関連する問題