2013-02-19 15 views
6

iCloudを使用するように設定されたアプリがあります。 NSUbiquitousKeyValueStoreにキー/値を追加していて、すべてのデバイスで期待どおりに取得できます。ただし、設定の下でアプリのiCloudデータを削除すると、NSUbiquitousKeyValueStoreに追加したすべてのiCloudデータも削除されることが予想されますが、そうではありません。 iCloudをどのくらい長く同期しても、すべてのデータを取得できます。iCloudデータを削除してもNSUbiquitousKeyValueStoreがクリアされませんか?

私はdeveloper.icloud.comに行き、他のiCloudデータ(私はiCloudでCore Dataも使用しています)が正しく削除されているのを見ましたが、NSUbiquitousKeyValueStoreがデータを保持しているフォルダはありません。

これが削除されるはずですか?ユーザーがこれを削除できない場合、「クラウドメモリリーク」のようなものです。

答えて

6

これは、私はそれを行う方法です。

NSUbiquitousKeyValueStore *kvStore = [NSUbiquitousKeyValueStore defaultStore]; 
NSDictionary *kvd = [kvStore dictionaryRepresentation]; 
NSArray *arr = [kvd allKeys]; 
for (int i=0; i < arr.count; i++){ 
    NSString *key = [arr objectAtIndex:i]; 
    [kvStore removeObjectForKey:key]; 
} 
+0

ご回答ありがとうございます。私は手動で値を削除する方法が不思議ではない - その部分は明らかです。私は、ユーザーがこのデータを削除する方法であるかどうかを確認しようとしています。私はすでに何かを設定していたかどうかを知るために、ユビキタスストアの価値を打ち出していました。ユーザーがiCloudデータを削除した場合、その操作を再実行したいのです。しかし、ユーザーがデータを削除する方法がある場合、この方法は機能しない可能性があります。 – lehn0058

+0

ああ、大丈夫です。NSMetadataQueryを使用して、コアデータファイルがまだ存在するかどうかを判断することができます –

+0

ええ、トランザクションログが存在するだけでなく、特定のデバイスが設定されているかどうかを知る必要があります。私は自分のNSUbiquityKeyValueStoreを私が作成したubiquityコンテナとファイルを使って実装しようと思っています。こうすることで、ユーザーがiCloudデータを削除したときに値が確実に削除されます。 – lehn0058

2

削除iCloudの「書類とデータは」ただの文書やCOREデータを削除します。 NSUbiquitousKeyValueStore内の何も削除されません。私の期待は、それがアプリについて何もかもを削除するということでした。

iCloudサポートを追加する前に、NSUserDefaultsを使用してアプリ用の小さなデータを保存していました。たとえば、エンドユーザーは自分の名前とアドレスを入力することができ、NSUserDefaultsに保存します。それは複雑なデータではなく、コアデータやフラットファイルを格納する必要はありません。それをそこに保管するのはとても簡単ですし、それは機能します。私が電話からアプリを削除した場合、その情報は消えてしまいます。これは私が期待するものです。 iCloudサポートを追加したときに、NSUbiquitousKeyValueStoreに追加しました。しかし、アプリを削除して「文書とデータ」を削除しても、エンドユーザーの名前と住所はまだそこにあります。

私は何か間違っていると思った。 iCloudのキーバリューストレージは「ディスクリート」データであると考えられ、「iCloudのキーバリューデータストアはユーザーが見るものではない」ことがわかりました。

したがって、エンドユーザーが実際に見る非複雑なユーザーデータを完全に格納することができますが、それは意図された使用ではありません。私が「間違っている」ことは、それが意図していない使用のためにそれを使用していることです。

AppleがiCloudからすべてを削除しない理由はわかりません。または、少なくともユーザーに能力を与えます。

1

アプリの削除後にNSUbiquitousKeyValueStoreが残っていることは間違いありません。 削除の時点で、デバイスは他のデバイスがその共有データを依然として必要とするかどうかを認識しません。アプリが誤って(後で再インストール、その後、またはアンインストール)削除された場合は、デバイス間で共有され、復元されることを望んで

あなたは、アプリ内購入状況を保存するためにそれを使用することになり、ユーザの詳細など

一方、NSUserDefaultsはそのデバイスのアプリケーション自体に属するデータなので、アプリケーションを削除するとデータが削除されます。

+0

NSUbiquitousKeyValueStoreはいつ削除されますか?確かにこれは、もはや使用されないかもしれないアプリケーションのために永久に蓄積されません。ユーザーがこれを強制的に削除することはできませんか? –

関連する問題