Sqlite   发布时间:2022-05-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sqlite3中针对objective-c的持久层框架大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite3中针对objective-c的持久层框架

2010-04-19,Posted in Objective-c, 软件开发 | 7 回复


Cocoa与Cocoatouch(主要是指iphone,ipad,ipod等等)都对sqlite3提供了良好的支持,但objective-c语言中的sqlite3持久层框架确没有java中那样丰富与强大、灵活,直到我发现sqlitepersistentobjects这个框架。这个框架利用反射机制与valueobjects的完美结合,对sqlite3进行了非常轻量级的对象封装(这点有点像我2007年时写的一个java持久层框架,过些时候我整理一下,开源出来),使用者在编程过程中,基本不用再写SQL语句,也不需要再手工生成sqlite3数据库文件。你所关心的,就是值对象继承一个核心类,然后添加值对像的属性,实际他就是一款Objective-C实现的ActiveRecord–Rails社区红透半边天的ORM模式。

@H_618_15@一、sqlite persistent objects的下载与安装

sqlitepersistentobjects是Google code上的一个开源项目,大家可以出下载它,本项目地址是:http://code.google.com/p/sqlitepersistentobjects/

下载后,得到的源码包src内的源文件,copy到自己的项目中,建议最好新建一个分类(new group)见注1,与其它源码分离开来,便于管理.然后再工程中添加”libsqlite3.dylib”库。见注2

@H_618_15@二、sqlite persistent objects的使用

在使用前,我们先了解一下他是怎么工作的,首先要创建一个Objective-C类,这个类只需要继承自“sqlitePersistentObject”,然后,添加您想要持久化的Objective-C2.0属性。当这个类被实例化后,调用”save”方法,会自动保存到数据库中。每一个“sqlitePersistentObject”的子类都会拥有数据库中对应的一张表。每一个属性(不包括集合类型,像,NSDictionary,NSArray,NSSet或这些类的可变类型)都会持久化到表中相应字段中。属性中如果含有指针对象是”sqlitePersistentObject”实例,也将会在关联表里新添条记录。注意,这里的属性必须是实现“NSCoding”的对象,如NSDate,NsString,NSData,NSMutableData,NSnumber与NSObject,而c-String,voID pointer,strutct 或union它们不是对象,将不会支持。但所有的数字(int,float等)都会保存在应的字段上。

我们简单要来做一个例子,定义一个类Person,继承sqlitePersistentObject,把这个类的属性保存到数据库中,代码如下:

#import
#import “sqlitePersistentObject.h”
//Person.m的生成略,大家都应该知道的
@interface Person : sqlitePersistentObject {
NsString *iname;
int iAge;
}
@property (nonatomic, retain) NsString * iname;
@property (nonatomic) int iAge;
@end
@H_607_72@ @H_607_72@

生成类文件后,在其它使用的类中创建实例:

Person *person = [[Person alloc] init];
person.iname = @”leeguoli”;
person.iAge = 20;
@H_607_72@ @H_607_72@

调用”save”方法,保存到数据库中:

[person save];
@H_607_72@ @H_607_72@

加载表中的数据也相当的简单。任何一个”Person”类都有多个提供查询的类方法。例如,你可以查询所有姓“lee”的人:

NSArray *people = [Person findByIname:@"'lee%'"];//这里实际有点像like语句,where iname like 'lee%'
@H_607_72@ @H_607_72@

或者更灵活的使用SQL查询条件:

Person *leeguoli = [Person findFirstByCriteria:@"WHERE i_name = 'leeguoli' AND i_age = 20];
@H_607_72@ @H_607_72@

注意大写字母区分的情况用下划线代替(ActiveRecord的惯例)。”findByCriteria:”返回一个NSArray数组,”findFirstByCriteria:”返回一个对象。

如果要更新,当然这里先要查询出来需要更新的对象,然后修改对象的值并保存就可以了,这里不再详写。



=========================================================

注1、Xcode界面中,右键点击Classes目录,选择“Add > NewGroup”,命名为sqlitePersistentObject。右键点击新建的“sqlitePersistentObject”目录,选择“Add > ExisTingfiles”,将解压缩出来的src目录下所有文件导入。

注2、请右键点击左部菜单中的”Frameworks”目录,选择 “Add > ExisTingFrameworks…”,然后在本地目录中选择“/Developer/Platforms/iPhoneOs.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/usr/lib/”,找到“libsqlite3.0.dylib”文件并双击。一个弹出窗口将出现,点击其中“Add”按钮将库添加入项目中

@H_607_72@

大佬总结

以上是大佬教程为你收集整理的sqlite3中针对objective-c的持久层框架全部内容,希望文章能够帮你解决sqlite3中针对objective-c的持久层框架所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: