2

我正在考虑创建一个基类,其中所做的每个更改都会立即保存到 NSUserDefaults(当然只有 KVO 兼容部分),并在实例化该类型的对象时自动加载(一个非常基本的、可重用的用户数据存储)。

我无意为这个对象的每个子类提供一个类似“键列表”的常量,所以我希望有一种自动的方法来观察对象的每个属性。

任何想法如何做到这一点?当然只有公共 API。

4

1 回答 1

0

如果你有一个对象的一组属性,你可以将它们保存到 NSUserDefaults 中的字典中。要在每次设置时保存每个属性,您可以使用以下方法为每个属性创建自定义 setter 方法:

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 回答