我有一个UITableViewController类,我想使用NSUserDefaults保存其信息。我的表是通过一个名为“tasks”的数组创建的,这些对象来自NSObject类“New Task”。我如何以及在何处使用NSUserDefaults?我知道我必须将我的数组添加为NSUserDefaults对象,但我该如何检索它呢?任何帮助,将不胜感激。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *DoneCellIdentifier = @"DoneTaskCell";
static NSString *NotDoneCellIdentifier = @"NotDoneTaskCell";
NewTask* currentTask = [self.tasks objectAtIndex:indexPath.row];
NSString *cellIdentifer = currentTask.done ? DoneCellIdentifier : NotDoneCellIdentifier;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifer forIndexPath:indexPath];
if(cell==nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifer];
}
cell.textLabel.text = currentTask.name;
return cell;
}
这是我的viewdidload方法:
- (void)viewDidLoad
{
[super viewDidLoad];
self.tasks = [[NSMutableArray alloc]init];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.tasks forKey:@"TasksArray"];
}
答案 0 :(得分:1)
将数据写入用户默认值:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.tasks forKey:@"TasksArray"];
// To be sure to persist changes you can call the synchronize method
[userDefaults synchronize];
从用户默认值中检索数据:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
id tasks = [userDefaults objectForKey:@"TasksArray"];
但是,您只能存储NSData
,NSString
,NSNumber
,NSDate
,NSArray
或NSDictionary
类型的对象(数组)和字典只能包含该列表的对象)。如果您需要存储其他一些对象,可以使用NSKeyedArchiver
将对象转换为NSData
然后存储它,然后使用NSKeyedUnarchiver
从数据中唤醒您的对象。
答案 1 :(得分:0)
您可以在此处了解如何将对象保存到NSUserDefaults
Why NSUserDefaults failed to save NSMutableDictionary in iPhone SDK?