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

Bob*_*Bob 3 iphone nsuserdefaults nsmutablearray nsarray ios

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

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

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

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

我之前已经看过,并且一直在使用,NSUserDefaults但是我不确定在使用时接近这个的好方法是什么NSUserDefaults.

Ian*_*ald 6

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

NSMutableArray *yourArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"yourKey"]mutableCopy];
Run Code Online (Sandbox Code Playgroud)

设置数组:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:yourArray forKey:@"yourKey"];
[userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)

或者使用词典并嵌套它们

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];
Run Code Online (Sandbox Code Playgroud)