我有一个存储对象列表的小型 iPhone 应用程序。用户可以添加和删除对象,但此列表将保持相当小(大多数用户将有 10-30 个对象)。NSUserDefaults
似乎更容易使用,但会sqlite3
更快?只有 30 条“记录”会有什么明显的区别吗?
问问题
3031 次
2 回答
5
NSUserDefaults 用于用户偏好,通常是基本对象,如 NSString 或 NSNumber。Sqlite、序列化属性列表中的对象集合或 Core Data 都是用于存储用户数据(例如您创建的模型对象)的有效选项。
你不会看到速度差异,但最好还是为你正在做的事情选择正确的机制。如果只是偏好,那么使用 NSUserDefaults,否则我会将您的对象序列化为 plist。如果你是 Cocoa 的新手,我会首先避免使用 Core Data 甚至 sqlite,让自己有机会先学习基础知识。
于 2009-05-30T18:45:12.333 回答
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;
}
于 2009-05-30T20:54:19.547 回答