0

我有一个 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"];

}

4

2 回答 2

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

但是,您只能存储 、 、 、 、 或 类型的对象NSDataNSString数组NSNumberNSDate字典NSArray只能NSDictionary包含该列表的对象)。如果您需要存储一些其他对象,您可以使用 aNSKeyedArchiver将您的对象转换为NSData然后存储它,并使用 aNSKeyedUnarchiver从数据中唤醒您的对象。

于 2013-05-28T02:55:23.817 回答
0

您可以在这里查看以了解如何将对象保存到 NSUserDefaults

为什么 NSUserDefaults 无法在 iPhone SDK 中保存 NSMutableDictionary?

于 2013-05-28T03:01:15.477 回答