使用用户默认值显示NSMutable数组

时间:2015-06-28 10:22:10

标签: ios objective-c nsmutablearray nsuserdefaults

我正在开发一个具有可变数组自定义对象ToDoItem的应用程序(将开发示例变形为我自己的应用程序,稍后会更改)。我知道它不是最好的方法,但我使用用户默认值来保存它。现在,在顶部注释掉的代码中,只需调用" addObject"将信息加载到表视图中。我不知道这是如何工作的复杂性,有人可以解释为什么当我从用户默认值加载它时没有任何东西加载到表视图?我是初学者,所以请彻底解释。谢谢你的帮助!

@interface ToDoListTableViewController ()
@property NSMutableArray *toDoItems;

@end

@implementation ToDoListTableViewController
- (void)loadInitialData1 {

   /*
ToDoItem *item1 = [[ToDoItem alloc] init];
item1.location = @"BDK";
item1.total = [[NSNumber alloc] initWithFloat:15.0];
item1.tip = [[NSNumber alloc] initWithFloat:5.567];
item1.percentage = [[NSNumber alloc] initWithFloat:33.0];
[self.toDoItems addObject:item1];
ToDoItem *item2 = [[ToDoItem alloc] init];
item2.location = @"Emrick";
item2.total = [[NSNumber alloc] initWithFloat:10.0];
item2.tip = [[NSNumber alloc] initWithFloat:2.0];
item2.percentage = [[NSNumber alloc] initWithFloat:20.0];
[self.toDoItems addObject:item2];
ToDoItem *item3 = [[ToDoItem alloc] init];
item3.location = @"PPM";
item3.total = [[NSNumber alloc] initWithFloat:20.0];
item3.tip = [[NSNumber alloc] initWithFloat:20.0];
item3.percentage = [[NSNumber alloc] initWithFloat:100.0];
[self.toDoItems addObject:item3];
*/


self.toDoItems = [[[NSUserDefaults standardUserDefaults]objectForKey:@"key"]mutableCopy];

}

- (IBAction)unwindToList:(UIStoryboardSegue *)segue {
AddToDoItemViewController *source = [segue sourceViewController];
ToDoItem *item = source.toDoItem;
if (item != nil) {

    [self.toDoItems addObject:item];
    [self.tableView reloadData];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:self.toDoItems forKey:@"key"];

    [defaults synchronize];

    NSLog(@"Data saved");

    }
}

//Here is an additional method I have if it helps
 - (void)viewDidLoad { 
[super viewDidLoad];
 self.toDoItems =[[NSMutableArray alloc] init]; [self loadInitialData1]; 
} 

0 个答案:

没有答案