Objective-C 中 Sqlite3 持久层框架
Objective-c 中 Sqlite3 持久层框架是本文要介绍的内容,Cocoa 与 Cocoa Touch(主要是指
iphone,ipad,ipod 等等)都对 sqlite3 提供了良好的支持,但 objective-c 语言中的 sqlite3 持
久层框架确没有
java 中那样丰富与强大、灵活,直到我发现 sqlitepersistentobjects 这个框架。
这个框架利用反射机制与 value objects 的完美结合,对 sqlite3 进行了非常轻量级的对象封
装(这点有点像我
2007 年时写的一个 java 持久层框架,过些时候我整理一下,开 源出
来),使用者在编程过程中,基本不用再写
sql 语句,也不需要再手工生成 sqlite3 数据库
文件。你所关心的,就是值对象继承一个核心类,然后添加
值对像的属性,实际他就是一
款
Objective-C 实现的 ActiveRecord–Rails 社区红透半边天的 ORM 模式。
一、sqlite persistent objects 的下载与安装
sqlitepersistentobjects 是 google code 上的一个开源项目,大家可以出下载它,本项目地址
是:
http://code.google.com/p/sqlitepersistentobjects/
下载后,得到的源码包 src 内的源文件,copy 到自己的项目中,建议最好新建一个分类
(
new group)见注 1,与其它源码分离开来,便于管理.然后再工程中添加”libsqlite3.dylib”
库。见注
2
二、sqlite persistent objects 的使用
在使用前,我们先了解一下他是怎么工作的,首先要创建一个 Objective-C 类,这个类只
需要继承自
“SQLitePersistentObject”,然后,添加您想要持久化的 Objective-C 2.0 属性。当
这个类被实例化后,调用
”save”方法,会自动保存到数据库中。
每一个“SQLitePersistentObject”的子类都会拥有数据库中对应的一张表。每一个属性(不
包括集合类型,
像,NSDictionary,NSArray,NSSet 或这些类的可变类型)都会持久化到表中
相应字段中。属性中如果含有指针对象
是”SQLitePersistentObject”实例,也将会在关联表里
新添条记录。
注 意 , 这 里 的 属 性 必 须 是 实 现 “ NSCoding” 的 对 象 , 如
NSDate,NSString,NSData,NSMutableData,NSNumber 与 NSObject,而 c-string,void pointer,
strutct 或 union 它们不是对象,将不会支持。但所有的数字(int,float 等)都会保存在应的字段
上。
我们简单要来做一个例子,定义一个类 Person,继承 SQLitePersistentObject,把这个类
的属性保存到数据库中,代码如下:
1
#import
2
#import “SQLitePersistentObject.h”
3
//Person.m 的生成略,大家都应该知道的