6

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

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

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

4

5 に答える 5

8

これは私がそれを行う方法です:

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];
}
于 2013-02-19T17:11:23.200 に答える
2

アプリ削除後も NSUbiquitousKeyValueStore が残っているのは正解です。削除の時点では、デバイスは、他のデバイスがその共有データを引き続き必要としているかどうかを知りません。

これを使用して、デバイス間で共有したいアプリ内購入ステータス、ユーザー詳細などを保存し、アプリが誤って削除された場合 (またはアンインストールして後で再インストールした場合) に復元します。

一方、NSUserDefaults は、そのデバイス上のアプリ自体に属するデータであるため、アプリを削除するとデータが削除されます。

于 2016-04-18T10:52:26.237 に答える