【问题标题】:Best way to save data to iOS?将数据保存到 iOS 的最佳方法?
【发布时间】:2012-06-19 19:25:28
【问题描述】:

在我的应用程序 (iOS 5) 中,我想保存数据 - 我想节省债务。 所以它:

  • 加减钱
  • 金额
  • 以及欠债人姓名(或欠债人姓名)

但我不知道如何保存数据(NSUserdefaults、Core data、SQLLite)

也许你能告诉我保存它们的最佳方法?

【问题讨论】:

  • 您希望保存多少条记录?
  • 那是用户定义的 - 所以我不知道(可能只有 4 个 - 但也有 300 个)。取决于用户。

标签: ios xcode ios5 save


【解决方案1】:

在设备上存储少量数据的最简单方法是使用 NSUserDefaults。但只能以这种方式保存属性列表。属性列表是 6 种类型的对象的组合,NSNumber、NSString、NSArray、NSDictionary、NSDate、NSData。 在您的情况下,这很容易做到。例如,要保存新的债务记录,您可以使用以下方法:

#define DEBTS_LIST_KEY @"listOfAllDebts"
#define DEBTOR_NAME_KEY @"debtorName"
#define DEBT_AMOUNT_KEY @"amountOfDebt"

-(void) saveDebt:(CGFloat) debtAmount forName:(NSString *) debtorName
{
    // pointer to standart user defaults
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    // the mutalbe array of all debts
    NSMutableArray * alldebtRecords = [[defaults objectForKey:DEBTS_LIST_KEY] mutableCopy];
    // create new record
    // to save CGFloat you need to wrap it into NSNumber
    NSNumber * amount = [NSNumber numberWithFloat:debtAmount];

    NSDictionary * newRecord = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:amount,debtorName, nil] forKeys:[NSArray arrayWithObjects:DEBT_AMOUNT_KEY, DEBTOR_NAME_KEY, nil]];
    [alldebtRecords addObject:newRecord];
    [defaults setObject:alldebtRecords forKey:DEBTS_LIST_KEY];
    // do not forget to save changes
    [defaults synchronize];
}

要阅读债务清单,您已经阅读过类似的内容。

但我建议您使用核心数据。它更加灵活,您不必编写所有这些代码来管理您的数据(编辑现有记录或删除它们)。例如,当您想要保存债务日期时,您将能够更轻松地扩展您的模型。这是a good tutorial的链接

【讨论】:

  • 一直在考虑 Core Data..但是所有的教程都有点难以理解。但是你的链接真的帮助了我,我现在可以在我的应用程序中实现核心数据(真的很容易 o.O)。谢谢! :)
  • 我是 Core Data 新手,本教程对我也非常有用。我很高兴能帮上忙。
【解决方案2】:

如果记录的数量是用户定义的,并且会随着应用的使用而增长,我建议使用 SQLite 支持的 Core Data。如果您在现代 Xcode(即 Xcode 4)中工作,则创建模型非常简单且图形化。如果你以前使用过 ORM 框架,那么查询等的接口应该很容易掌握。

四处搜索一些教程,但要特别注意寻找与您的 Xcode 版本相匹配的教程,因为 Core Data 开发最近发生了很大变化。

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 2012-02-07
    • 2012-01-30
    • 2018-05-20
    • 2014-07-12
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多