使用 SQLite 的对象持久化 ORM 工具包
SQLitePersistentObject 是 Jeff LaMarche 编写的 ORM 工具包,非常出色。
任何子类此类的类都可以将它们的属性自动持久化到 sqlite 数据库中。有一些限制 - 目前不支持某些属性类型,如 void *, char *,structs 和 unions。与 Key Value Coding 不正确工作的一切都不会与此一起工作。普通标量(int,float 等)将被转换为 NSNumber,BOOL 也是如此。
SQLite 非常擅长转换类型,因此您可以通过传递字符串中的数字来在数字字段中进行搜索,也可以通过传递数字来在字符串字段中进行搜索。我们对搜索方法的唯一限制是不允许对 blob 进行搜索,这仅仅是出于性能原因。
但现在,Jeff 不再为此库工作。所以我将为此库工作。在原始中,此库在多线程操作中是非线程安全的,我只是通过一些新方法使它在多线程中线程安全。
或者,您可以简单地将从 SQLitePersistentObject / SQLitePersistentObject
中的文件拖到您自己的项目中。
创建一个继承自 SQLitePersistentObject 的对象
header file:
#import "SQLitePersistentObject.h"
@interface Device : SQLitePersistentObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *model;
@property (nonatomic, strong) NSNumber *price;
@end
implementation file:
#import "Device.h"
@implementation Device
@end
#pragma mark - DeJohn Dong Added Methods
/**
* Asynchronous add/update an object to db.
*/
- (void)save;
/**
* Asynchronous delete an object from db.
*/
- (void)asynDeleteObject;
/**
* Asynchronous delete an object and the cascade objects from db.
*/
- (void)asynDeleteObjectCascade:(BOOL)cascade;
/**
* Asynchronous Query the object list with criteria from db.
*
* @param criteria criteria string
* @param result result list
*/
+ (void)queryByCriteria:(NSString *)criteria result:(DBQueryResult)result;
/**
* Asynchronous Query the first object with criteria from db
*
* @param criteria criteria string
* @param result result object
*/
+ (void)queryFirstItemByCriteria:(NSString *)criteria result:(DBQueryResult)result;
/**
* Asynchronous Query all the objects from db
*
* @param result result list
*/
+ (void)queryResult:(DBQueryResult)result;
Jeff LaMarche [email protected] / DeJohn Dong, [email protected]
SQLitePersistentObject 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。