成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQLite3中針對(duì)Objective-C的持久層框架

移動(dòng)開(kāi)發(fā) iOS
Cocoa與Cocoa Touch(主要是指iPhone,iPad,iPod等等)都對(duì)SQLite3提供了良好的支持,但Objective-C語(yǔ)言中的SQLite3持久層框架確沒(méi)有Java中那樣豐富與強(qiáng)大、靈活,直到我發(fā)現(xiàn)SQLitepersistentobjects這個(gè)框架。

SQLitepersistentobjects這個(gè)框架利用反射機(jī)制與value objects的***結(jié)合,對(duì)sqlite3進(jìn)行了非常輕量級(jí)的對(duì)象封裝(這點(diǎn)有點(diǎn)像我2007年時(shí)寫(xiě)的一個(gè)java持久層框架,過(guò)些時(shí)候我整理一下,開(kāi)源出來(lái)),使用者在編程過(guò)程中,基本不用再寫(xiě)sql語(yǔ)句,也不需要再手工生成sqlite3數(shù)據(jù)庫(kù)文件。你所關(guān)心的,就是值對(duì)象繼承一個(gè)核心類,然后添加值對(duì)像的屬性,實(shí)際他就是一款Objective-C實(shí)現(xiàn)的ActiveRecord–Rails社區(qū)紅透半邊天的ORM模式。

一、sqlite persistent objects的下載與安裝

sqlitepersistentobjects是google code上的一個(gè)開(kāi)源項(xiàng)目,大家可以出下載它,本項(xiàng)目地址是:http://code.google.com/p/sqlitepersistentobjects/

下載后,得到的源碼包src內(nèi)的源文件,copy到自己的項(xiàng)目中,建議***新建一個(gè)分類(new group)見(jiàn)注1,與其它源碼分離開(kāi)來(lái),便于管理.然后再工程中添加”libsqlite3.dylib”庫(kù)。見(jiàn)注2

二、sqlite persistent objects的使用

在使用前,我們先了解一下他是怎么工作的,首先要?jiǎng)?chuàng)建一個(gè)Objective-C類,這個(gè)類只需要繼承自“SQLitePersistentObject”,然后,添加您想要持久化的Objective-C 2.0屬性。當(dāng)這個(gè)類被實(shí)例化后,調(diào)用”save”方法,會(huì)自動(dòng)保存到數(shù)據(jù)庫(kù)中。每一個(gè)“SQLitePersistentObject”的子類都會(huì)擁有數(shù)據(jù)庫(kù)中對(duì)應(yīng)的一張表。每一個(gè)屬性(不包括集合類型,像,NSDictionary,NSArray,NSSet或這些類的可變類型)都會(huì)持久化到表中相應(yīng)字段中。屬性中如果含有指針對(duì)象是”SQLitePersistentObject”實(shí)例,也將會(huì)在關(guān)聯(lián)表里新添?xiàng)l記錄。注意,這里的屬性必須是實(shí)現(xiàn)“NSCoding”的對(duì)象,如NSDate,NSString,NSData,NSMutableData,NSNumber與NSObject,而c-string,void pointer, strutct 或 union它們不是對(duì)象,將不會(huì)支持。但所有的數(shù)字(int,float等)都會(huì)保存在應(yīng)的字段上。

我們簡(jiǎn)單要來(lái)做一個(gè)例子,定義一個(gè)類Person,繼承SQLitePersistentObject,把這個(gè)類的屬性保存到數(shù)據(jù)庫(kù)中,代碼如下:

  1. #import 
  2. #import “SQLitePersistentObject.h” 
  3. //Person.m的生成略,大家都應(yīng)該知道的 
  4. @interface Person : SQLitePersistentObject { 
  5. NSString *iName; 
  6. int iAge; 
  7. @property (nonatomic, retain) NSString * iName; 
  8. @property (nonatomic) int iAge; 
  9. @end 

生成類文件后,在其它使用的類中創(chuàng)建實(shí)例:

  1. Person *person = [[Person alloc] init]; 
  2. person.iName = @”leeguoli”; 
  3. person.iAge = 20; 

調(diào)用”save”方法,保存到數(shù)據(jù)庫(kù)中:

  1. [person save]; 

加載表中的數(shù)據(jù)也相當(dāng)?shù)暮?jiǎn)單。任何一個(gè)”Person”類都有多個(gè)提供查詢的類方法。例如,你可以查詢所有姓“lee”的人:

  1. NSArray *people = [Person findByIName:@"'lee%'"];//這里實(shí)際有點(diǎn)像like語(yǔ)句,where iName like 'lee%' 

或者更靈活的使用SQL查詢條件:

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

注意大寫(xiě)字母區(qū)分的情況用下劃線代替(ActiveRecord的慣例)。”findByCriteria:”返回一個(gè)NSArray數(shù)組,”findFirstByCriteria:”返回一個(gè)對(duì)象。

如果要更新,當(dāng)然這里先要查詢出來(lái)需要更新的對(duì)象,然后修改對(duì)象的值并保存就可以了,這里不再詳寫(xiě)。

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

注1、Xcode界面中,右鍵點(diǎn)擊Classes目錄,選擇“Add > New Group”,命名為SQLitePersistentObject。右鍵點(diǎn)擊新建的 “SQLitePersistentObject”目錄,選擇“Add > Existing Files”,將解壓縮出來(lái)的src目錄下所有文件導(dǎo)入。

注2、請(qǐng)右鍵點(diǎn)擊左部菜單中的”Frameworks”目錄,選擇 “Add > Existing Frameworks…”,然后在本地目錄中選擇“/Developer/Platforms/iPhoneOS.platform/Developer /SDKs/iPhoneOS3.1.2.sdk/usr/lib/”,找到“libsqlite3.0.dylib”文件并雙擊。一個(gè)彈出窗口將出現(xiàn),點(diǎn)擊其中“Add”按鈕將庫(kù)添加入項(xiàng)目中。

責(zé)任編輯:佚名 來(lái)源: voland博客
相關(guān)推薦

2011-08-01 13:32:07

Objective-C Sqlite3 框架

2011-07-27 17:10:30

Objective-C 持久化

2011-05-11 15:19:01

CocoaObjective-C

2011-07-25 11:02:29

Objective-C Xcode 標(biāo)簽

2011-08-15 17:47:13

Objective-CisMemberOfC

2011-08-10 18:07:29

Objective-C反射

2011-08-04 10:57:33

Objective-C C語(yǔ)言 BOOL

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2013-03-27 12:54:00

iOS開(kāi)發(fā)Objective-C

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2013-03-26 10:35:47

Objective-C單例實(shí)現(xiàn)

2015-07-08 10:51:27

Objective-CRuntime

2012-01-11 09:15:45

Objective-C

2011-07-20 13:34:37

Objective-C self.

2011-07-08 18:44:09

Objective-C Self Super

2011-07-27 16:18:42

Objective-c 協(xié)議

2011-08-15 17:06:01

Objective-CNSLog

2014-11-25 10:18:17

Objective-C

2014-07-29 09:44:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成年人黄色一级片 | 91黄在线观看 | 久久亚洲欧美日韩精品专区 | 成人在线精品视频 | 亚洲啪啪一区 | 日韩三级电影在线看 | 国产精品国产三级国产a | 国产一区中文字幕 | 久久久美女 | 国产福利小视频 | 中文字幕1区2区3区 日韩在线视频免费观看 | 成人一区二区三区在线观看 | 一区二区三区在线观看视频 | 久久综合成人精品亚洲另类欧美 | 毛片链接| 成人黄色网址大全 | 亚洲 欧美 日韩在线 | 欧美一区二区在线观看 | 国产乱码久久久久久 | 欧美国产日韩成人 | www.久久久久久久久久久 | 亚洲精品欧美 | 亚洲视频在线观看 | 久草精品视频 | 9999在线视频 | 久久久国产一区二区三区 | 国产乱码高清区二区三区在线 | 精品毛片在线观看 | 久久精品亚洲精品国产欧美 | 日本中文字幕在线观看 | 国产精品永久免费观看 | 国产视频h| 欧美日韩一区二区视频在线观看 | 亚洲视频在线观看免费 | 成人精品国产 | 龙珠z在线观看 | 91视频a | 午夜精品久久久久久久久久久久久 | 中文字幕一区在线观看视频 | 欧美日韩在线成人 | av片在线免费看 |