我应该如何保存警报应用数据?

时间:2011-08-28 12:16:36

标签: ios iphone core-data plist alarm

我正在为iPhone制作一个报警应用程序,并想知道保存数据的最佳方法是什么。我尝试过实现CoreData但它不起作用。我查看并发现要使用CoreData,您必须在Xcode中创建一个新项目时勾选一个“使用CoreData进行存储”的复选框,我没有。而是我创建了一个基于视图的应用程序。我还可以实现CoreData,还是应该使用像plist或SQLite这样的东西。

1 个答案:

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