将数据保存到iOS的最佳方法?

H3r*_*3nd 6 xcode save ios ios5

在我的应用程序(iOS 5)中,我想保存数据 - 我想保存债务.所以这是:

  • 加或减钱
  • 金额
  • 和有债务的名字(或你有债务的名称)

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

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

小智 10

在您的设备上存储少量数据的最简单方法是使用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];
}
Run Code Online (Sandbox Code Playgroud)

阅读债务清单,你已经读过类似的东西.

但我建议你使用核心数据.它更灵活,您不必编写所有这些代码来管理您的数据(编辑现有记录或删除它们).您可以更轻松地扩展模型,例如,当您想要保存债务日期时.这是一个很好的教程的链接