我正在尝试在UITableView
上显示一个“收藏列表”,我需要为每个列表保存大约5个对象。所以我想我的tableView dataSource在NSDictionary
内会有NSArray
。
当我读到“从NSUserDefaults返回的值是不可变的”时,我对使用NSUserDefaults
感到吃惊。有没有办法可以操纵存储的对象?例如,从NSUSerDefaults
读取数组,然后在其上添加新对象并将其存储回来。
NSUserDefaults
看起来很容易使用。
EDIT 我们可以在?
中插入可变对象吗?答案 0 :(得分:0)
如果它是Mutable / Immutable集群的一部分,如NSArray / NSMutableArray NSDictionary / NSImmutableDictionary等,您可以调用mutableCopy
来获取对象的副本。
所以从字典中取出对象 - 在其上调用mutableCopy,你可以修改它并保存回来。
请记住,此方法的名称中有一个副本,因此您需要在完成后释放副本。
答案 1 :(得分:0)
您可以从NSUserDefaults中读取对象,如下所示:
//Read from NSUSerDefaults
NSMutableArray* favListArray = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"listArray"]];
//Add objects to array
[favListArray addObject:@"NewObject1"];
[favListArray addObject:@"NewObject2"];
//Overwrite the NSUSerDefaults valueForKey:@"listArray"
[[NSUserDefaults standardUserDefaults] setObject:favListArray forKey:@"listArray"];
[[NSUserDefaults standardUserDefaults] synchronize];