我正在为iPhone制作一个报警应用程序,并想知道保存数据的最佳方法是什么。我尝试过实现CoreData但它不起作用。我查看并发现要使用CoreData,您必须在Xcode中创建一个新项目时勾选一个“使用CoreData进行存储”的复选框,我没有。而是我创建了一个基于视图的应用程序。我还可以实现CoreData,还是应该使用像plist或SQLite这样的东西。
答案 0 :(得分:3)
我会做什么,只需将数据存储在NSUserDefaults中作为字典数组。
例如,假设你有:
NSDictionary *alarmOne = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateOne, labelOne, repeatIntervalOne, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSDictionary *alarmTwo = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateTwo, labelTwo, repeatIntervalTwo, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSArray *alarmsToBeSaved = [NSArray arrayWithObjects:alarmOne, alarmTwo, nil];
//save the alarms
[[NSUserDefaults standardUserDefaults] setObject:alarmsToBeSaved forKey:@"MyAlarms"];
//get alarms back from NSUserDefaults
NSArray *alarms = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"];
for (NSDictionary *alarm in alarms){
NSLog(@"label of alarm: %@", [alarm objectForKey:@"label"]); //output alarm labels for example!
}
您还可以将此阵列保存到应用程序的Documents目录中的磁盘...
当您拥有大量数据时,核心数据通常会更好,您希望快速退出数据库(搜索)并更好地控制内存使用情况。
如何添加新闹钟?
NSDictionary *alarmThree = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateThree, labelThree, repeatIntervalThree, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSMutableArray *newAlarms = [NSMutableArray arrayWithObjects:[[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"]];
//add the new alarm Dict
[newAlarms addObject:alarmThree];
//save the array
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithArray:newAlarms] forKey:@"MyAlarms"];