我有一个小型iPhone应用程序,用于存储对象列表。用户可以添加和删除对象,但此列表将保持相当小(大多数用户将有10-30个对象)。 NSUserDefaults
似乎更容易使用,但sqlite3
会更快吗?只有30个“记录”会有明显的区别吗?
答案 0 :(得分:5)
NSUserDefaults用于用户首选项,通常是NSString或NSNumber等基本对象。 Sqlite,序列化属性列表中的对象集合,或核心数据都是存储用户数据的有效选项,例如您创建的模型对象。
你不会看到速度差异,但仍然最好为你正在做的事情选择正确的机制。如果它只是首选项,那么使用NSUserDefaults,否则我会将您的对象序列化为plist。如果你是Cocoa的新手,我会首先避免使用Core Data甚至是sqlite,让自己有机会先学习基础知识。
答案 1 :(得分:2)
尝试使用NSCoding协议。声明你的类实现NSCoding协议:
@interface Person : NSObject <NSCoding>
上一行承诺实现以下方法:
-(id)initWithCoder:(NSCoder *)coder;
-(void)encodeWithCoder:(NSCoder *)coder;
您的方法应该类似于:
-(void)encodeWithCoder:(NSCoder *)coder {
[super encodeWithCoder:coder];
[coder encodeObject:firstName forKey:@"firstName"];
[coder encodeObject:lastName forKey:@"lastName"];
}
-(id)initWithCoder:(NSCoder *)coder {
[super init];
firstName = [[coder decodeObjectForKey:@"firstName"] retain];
lastName = [[coder decodeObjectForKey:@"lastName"] retain];
return self;
}