如何正确地使用NSUserDefaults?

3

我有一个问题,困扰了我很久,希望有人能给我一些提示或帮助。

我有一个包含7个对象的表格。当用户点击其中一个对象时,会出现一个新的表格,对应于所选的对象。在这个表格中,用户可以按“添加”按钮,进入到一个新的表格,在那里他们可以选择表2中的对象。

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

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

我已经查看并使用NSUserDefaults,但是当使用NSUserDefaults时,我不确定如何更好地处理这个问题。


请尝试此链接:http://jayprakashdubey.blogspot.in/2014/07/nsuserdefault-usage.html - Jayprakash Dubey
1个回答

6

您需要从用户默认设置中获取数组,修改它,然后将其重新写入用户默认设置中。

获取数组:

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];

感谢您的答复,Ian。但是由于我的知识不足,我正在尝试采用字典方式,但似乎无法理解嵌套中发生了什么。为什么有两个?以及如何使用那种方式添加数据并再次获取它? - Bob
你说你想要一个数组中包含另一个数组,就我所理解的,这就是为什么我建议嵌套。至于获取数据,你可以将字典中的项添加到数组或单独的字符串中。 - Ian Oswald

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接