2

私は、行われたすべての変更がすぐに NSUserDefaults に保存され (もちろん KVO 準拠の部分のみ)、そのタイプのオブジェクトがインスタンス化されるたびに自動的に読み込まれる基本クラスを作成することを考えています (本当に基本的で再利用可能なユーザー データ ストア)。

このオブジェクトのすべてのサブクラスに「キーのリスト」のような定数を提供するつもりはないので、オブジェクトのすべてのプロパティを自動的に監視する方法があることを願っています。

これを行う方法はありますか?もちろん、単にパブリック API を使用します。

4

1 に答える 1

0

オブジェクトの一連のプロパティがある場合は、それらを NSUserDefaults の辞書に保存できます。各プロパティを設定するたびに保存するには、これを使用して各プロパティのカスタム セッター メソッドを作成できます。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        if ([defaults objectForKey:@"yourKey"] == nil) {

            NSDictionary *dict  = [NSDictionary dictionaryWithObject:@"yourObject" forKey:@"keyForYourObject"];
            // Add stuff to the dictionary
            [defaults setObject:dict forKey:@"yourKey"];
        }else{
            NSDictionary *dict = [defaults objectForKey:@"yourKey"];
            // Add stuff to the dictionary
             [defaults setObject:dict forKey:@"yourKey"];
        }

これにより、すべてのプロパティとともに UserDefaults に保存された単一の辞書が得られます。次に、標準メソッドを使用してキーのリストを取得します。

NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"];
NSArray *keys = [dict allKeys];
于 2012-09-30T01:37:51.130 に答える