小型数据库的方法 - iOS
Approach for small database - iOS
我正在构建一个需要我存储很多东西的应用程序。
我有一个由 4 到 5 个 BOOL 变量组成的数据对象,可能有 800 - 1000 个这样的对象需要保留。
我很困惑我该如何编程,我应该选择 sql 数据库还是核心数据,因为显然 NSUserdefaults 不是一个选项。
1000个对象也可以存储在plist中。生成一个包含 1000 个您类型的对象的 .plist 文件。然后在您的应用程序中检查性能。如果没问题,那么您的应用程序将更易于编写。
您可以按照@adobels 的建议轻松地将它们存储在 plist 中。您的 Class 会将 BOOL 存储在 NSNumber 中,而您的 class 实现 NSCoding:
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:member1ToStore forKey:@"yourFirstBoolKey"];
}
- (id)initWithCoder:(NSCoder *)coder ...
如果 class 的所有实例都在一个 NSArray(或类似的 Cocoa 集合)中,那么您只需归档和取消归档到一个文件,例如
[NSKeyedArchiver archiveRootObject:yourCollectionOfClasses toFile:archivePath]
[NSKeyedUnarchiver unarchiveObjectWithFile:[[self archiveURL] path]];
见documentation at apple developer and this fine answer
我正在构建一个需要我存储很多东西的应用程序。
我有一个由 4 到 5 个 BOOL 变量组成的数据对象,可能有 800 - 1000 个这样的对象需要保留。
我很困惑我该如何编程,我应该选择 sql 数据库还是核心数据,因为显然 NSUserdefaults 不是一个选项。
1000个对象也可以存储在plist中。生成一个包含 1000 个您类型的对象的 .plist 文件。然后在您的应用程序中检查性能。如果没问题,那么您的应用程序将更易于编写。
您可以按照@adobels 的建议轻松地将它们存储在 plist 中。您的 Class 会将 BOOL 存储在 NSNumber 中,而您的 class 实现 NSCoding:
- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:member1ToStore forKey:@"yourFirstBoolKey"];
}
- (id)initWithCoder:(NSCoder *)coder ...
如果 class 的所有实例都在一个 NSArray(或类似的 Cocoa 集合)中,那么您只需归档和取消归档到一个文件,例如
[NSKeyedArchiver archiveRootObject:yourCollectionOfClasses toFile:archivePath]
[NSKeyedUnarchiver unarchiveObjectWithFile:[[self archiveURL] path]];
见documentation at apple developer and this fine answer