background image

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 的生成略,大家都应该知道的