如何在"Level 1-2 open"上更改值"Level 1-2 关闭"?我必须删除它并添加新价值?还是干脆覆盖?我该怎么做?
谢谢
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"key_open_levels"];
dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"open", @"level 1-1",
@"closed", @"level 1-2",
@"closed", @"level 1-3",
@"closed", @"level 1-4",
@"closed", @"level 1-5",
@"closed", @"level 1-6",
@"closed", @"level 1-7",
@"closed", @"level 1-8",
@"closed", @"level 1-9",
@"closed", @"level 1-10", nil];
// NSString *customerDict ;
[[NSUserDefaults standardUserDefaults] setValue:dict forKey:@"key_open_levels"];
if ([[dict valueForKey:@"level 1-2"] isEqualToString:@"closed" ]){
//what should I write here?
}else{
}
试试下面的代码。
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"open", @"level 1-1",
@"closed", @"level 1-2",
@"closed", @"level 1-3",
@"closed", @"level 1-4",
@"closed", @"level 1-5",
@"closed", @"level 1-6",
@"closed", @"level 1-7",
@"closed", @"level 1-8",
@"closed", @"level 1-9",
@"closed", @"level 1-10", nil];
[dict removeObjectForKey:@"level 1-2"];
[dict setObject:@"open" forKey:@"level 1-2"];
如果您需要将整个NSDictionary
添加到NSMutableDictionary
NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
[newDict addEntriesFromDictionary: dict];
[newDict setObject:@"<value>" forKey:@"<Key Name>"];
NSLog(@"%@", newDict);
NSDictionary 是不可变的,因此无法更改该值。NSMutable字典是可变的,那么只有你添加,删除执行就可以完成。
使用@Amar所说的链接。 它很有帮助
In your code below [[NSUserDefaults standardUserDefaults] setValue:dict forKey:@"key_open_levels"];
Use below line of code than it will work.
[defaults synchronize];
也可以使用 NSMutableDictionary 而不是 NSDictionary。
NSDictionary
转换为NSMutableDictionary
。
或
您必须用用户NSMutableDictionary
代替NSDictionary
。
之后,您可以在 NSMutableDictionary
中更改值。
NSMutableDictionary *mutableDict = [dict mutableCopy];
Apple为我们提供了NSMutableDictionary
和NSDicitionary
,将数据存储在键值对中,其中NSMutableDicitonary
是可编辑的。这取决于用途,如果数据将被更改,您应该使用NSMutableDictionary
而不是创建NSDictionary
或[instanceOfNSDictionary mutableCopy]
例如:
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"open", @"level 1-1",
@"closed", @"level 1-2",
@"closed", @"level 1-3",
@"closed", @"level 1-4",
@"closed", @"level 1-5",
@"closed", @"level 1-6",
@"closed", @"level 1-7",
@"closed", @"level 1-8",
@"closed", @"level 1-9",
@"closed", @"level 1-10", nil];
[dict2 setObject:@"open" forKey:@"level 1-2"]; //<---- Set value at later stage
编辑
// Archive data to save
NSMutableArray *archiveArray = [NSMutableArray array];
NSData *personEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:completeResponse];
[archiveArray addObject:personEncodedObject];
// Set in userDefault
[[NSUserDefaults standardUserDefaults] setValue:archiveArray forKey:@"key_open_levels"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Get archived data from userdefault
archiveArray = [[NSUserDefaults standardUserDefaults] valueForKey:@"key_open_levels"];
// Unarchive and use it
NSLog(@"%@", [NSKeyedUnarchiver unarchiveObjectWithData:[archiveArray objectAtIndex:0]]);
创建对象,我们就无法设置它。 把它当作一个 nsmutabledictionary . 你可以叽叽喳喳。 NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"open", @"level 1-1",
@"closed", @"level 1-2",
@"closed", @"level 1-3",
@"closed", @"level 1-4",
@"closed", @"level 1-5",
@"closed", @"level 1-6",
@"closed", @"level 1-7",
@"closed", @"level 1-8",
@"closed", @"level 1-9",
@"closed", @"level 1-10", nil];
[dict setObject:@"open" forKey:@"level 1-5"];
NSLog(@"%@",dict);