在我的应用程序(iOS 5)中,我想保存数据 - 我想节省债务。所以是:
- 加或减钱
- 金额
- 以及欠债的姓名(或欠债的姓名)
但我不知道如何保存数据(NSUserdefaults、Core data、SQLLite)
也许你能告诉我拯救它们的最佳方法?
在设备上存储少量数据的最简单方法是使用 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];
}
要阅读债务清单,您已经阅读过类似的内容。
但我建议你使用核心数据。它更加灵活,您不必编写所有这些代码来管理您的数据(编辑现有记录或删除它们)。例如,当您想要保存债务日期时,您将能够更轻松地扩展您的模型。这是一个很好的教程的链接
如果记录的数量是用户定义的,并且会随着应用的使用而增长,我建议使用 SQLite 支持的 Core Data。如果您在现代 Xcode(即 Xcode 4)中工作,则创建模型非常简单且图形化。如果你以前使用过 ORM 框架,那么查询等的接口应该很容易掌握。
搜索一些教程,但要具体找到与您的 Xcode 版本相匹配的教程,因为 Core Data 开发最近发生了很大变化。
好的和简单的方法是创建自己的对象并使用 NSCodying 和 NSCopying 序列化它们