使用NSUserDefaults的正确方法是什么?

时间:2011-03-11 14:12:41

标签: iphone ios nsmutablearray nsarray nsuserdefaults

我有一个问题,我无法理解,并希望有人可以给我一个提示或帮助。

我有一个包含7个对象的表。当按下其中一个对象时,向用户呈现对应于按下的对象的新表。在此表中,用户可以按下“添加”按钮,将它们带到一个新表,在那里他们可以选择表2的对象。

表1和表3(第一个和最后一个)不需要编辑,但表2需要。我需要添加用户从表3中选择的数据,并在关闭后再次进入应用程序时保存它。

在表1中总有7个对象。并且需要能够有一个不同的表2。 所以我不确定最好的方法是创建7个不同的数组。

我之前看过,并且之前一直在使用NSUserDefaults,但是当我使用NSUserDefaults时,我不确定解决这个问题的好方法是什么。

1 个答案:

答案 0 :(得分:6)

你需要让你的数组从用户默认值中修改它,然后将其重写回userdefaults。 获取阵列:

NSMutableArray *yourArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"]mutableCopy];

设置数组:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:yourArray forKey:@"yourKey"];
[userDefaults synchronize];

或者使用词典并将它们嵌套

NSMutableDictionary *yourDict1 = [[NSUserDefaults standardUserDefaults]objectForKey:@"yourKey1"]mutableCopy];
NSMutableDictionary *yourDict2 = [[yourDict1 valueForKey:@"yourKey2"]mutableCopy];

    // THIS WILL ADD DATA TO YOUR DICTIONARY
[yourDict2 setValue:@"value" forKey:@"key"];

    // THIS WILL GET DATA FROM YOUR DICTIONARY
NSString *tempStr = [yourDict2 valueForKey:@"keyToGet"];

    // This will write your sub dictionary to your main dictionary
[yourDict1 setObject: yourDict2 forKey:@"yourKey2"];

    // This will write your main dictionary back out to user defaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject: yourDict1 forKey:@"yourKey1"];
[userDefaults synchronize];
[yourDict1 release];
[yourDict2 release];