【问题标题】:How should I save alarm app data?我应该如何保存警报应用程序数据?
【发布时间】:2011-11-05 11:04:34
【问题描述】:

我正在为 iPhone 制作一个闹钟应用程序,并且想知道保存数据的最佳方式是什么。我已经尝试实现 CoreData,但它不起作用。我查看并发现要使用 CoreData,您必须在 Xcode 中创建新项目时勾选“使用 CoreData 进行存储”复选框,而我没有。相反,我创建了一个基于视图的应用程序。我还能实现 CoreData 还是应该使用 plist 或 SQLite 之类的其他东西。

【问题讨论】:

  • 少量数据plist可以,否则使用CoreData。
  • 我只想为用户可能创建的每个警报保存一个警报对象,例如 fireDate、标签和重复间隔。你认为 plist 能解决这个问题吗?
  • 当然仍然可以使用核心数据。只需创建一个新项目并选中核心数据选项并查看项目 - 尤其是应用程序委托。您可以将大量核心数据代码复制并粘贴到您的其他项目中
  • 我认为 plist 就可以了
  • 您始终可以实现 Core Data,即使您在第一次构建项目时没有选择它。但是您必须手动导入 Core Data 框架并添加所有必要的 Core Data 方法和实例变量。这就是为什么建议您在开头添加它。如果您使用 Core Data 添加一个新项目,您只会更改 AppDelegate 文件,您可以在那里进行所有调整并让应用程序快速运行!

标签: ios iphone core-data plist alarm


【解决方案1】:

我会做什么,只需将数据作为字典数组存储在 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 目录中的磁盘...

当您拥有大量数据时,Core Data 通常会更好,您希望快速从数据库中提取(搜索)并更好地控制内存使用。

如何添加新闹钟?

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

【讨论】:

  • 那么如何保存用户添加的数据?
  • 添加了如何保存第三个警报
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2015-12-13
  • 2014-09-26
  • 1970-01-01
相关资源
最近更新 更多