自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談iPhone中 CoreData 框架

移動開發(fā) iOS
本文介紹的是淺談iPhone中 CoreData 框架,主要介紹對CoreData 框架的一個說明,先來看內(nèi)容。

iPhoneCoreData 框架是本文要介紹的內(nèi)容,非嚴(yán)格的說, CoreData是對sqlite數(shù)據(jù)庫的一個封裝sqlite數(shù)據(jù)庫操作的基本流程是, 創(chuàng)建數(shù)據(jù)庫, 再通過定義一些字段來定義表格結(jié)構(gòu), 可以利用sql語句向表格中插入記錄, 刪除記錄, 修改記錄, 表格之間也可以建立聯(lián)系.

這個過程出現(xiàn)了, 表格的結(jié)構(gòu)(schema), 所有表格的結(jié)構(gòu)和相互聯(lián)系構(gòu)成整個數(shù)據(jù)庫的模型, 數(shù)據(jù)庫存放的方式(可以是文件或者在內(nèi)存), 數(shù)據(jù)庫操作, sql語句(主要是查詢), 表格里面的記錄

下面將上面說的文字, 跟CoreData的類作個對應(yīng):

表格結(jié)構(gòu)    --> NSEntityDescription

數(shù)據(jù)庫中所有表格和他們的聯(lián)系 -->NSManagedObjectModel

數(shù)據(jù)庫存放方式 --> NSPersistentStoreCoordinator

數(shù)據(jù)庫操作 --> NSManagedObjectContext

查詢語句 --> NSFetchRequest

表格的記錄 --> NSManagedObject

可能上面的對應(yīng)關(guān)系并非十分嚴(yán)格, 但確實(shí)可以幫助理解.

下面再看看CoreData的類

  1. NSEntityDescription  
  2. NSManagedObjectModel 

NSEntityDescription用來定義表格結(jié)構(gòu), 所以你就可以理解NSManagedObjectModel中的setEntities:(NSArray *)entities函數(shù)大概有什么用了 . 通常, 定義model, 是用文件CoreData.xcdatamodel, 可以圖形化的操作. 這類似用nib來創(chuàng)建界面.

建個工程, 使用coredata, 模擬器運(yùn)行之后, 程序?qū)?yīng)的document目錄出現(xiàn)一個CoreData.sqlite. 可以利用sqlite3命令來查看里面的表格結(jié)構(gòu)
用命令行sqlite3 CoreData.sqlite 進(jìn)入

  1. >.tables  
  2. ZEVENT        Z_METADATA    Z_PRIMARYKEY 

可以看到有表格ZEVENT, 對應(yīng)的CoreData.xcdatamodel文件有名字叫Event的Entity

  1. >.schema ZEVENT  
  2. CREATE TABLE ZEVENT ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZTIMESTAMP TIMESTAMP ); 

對應(yīng)的Event中有屬性timeStamp, 可以看到, 相應(yīng)的ZEVENT表格中有字段TIMESTAMP

  1. > select * from ZEVENT  
  2. 1|1|1|306295807.974966  
  3. 2|1|1|306295810.981875  
  4. 3|1|1|306295811.982537 

這表格有三個記錄, 可以用來初始化三個NSManagedObject, 修改了NSManagedObject, save之后也修改了表格記錄

你可以在CoreData.xcdatamodel添加新的entity, 之后用sqlit3命令來查看數(shù)據(jù)庫的變化

NSPersistentStoreCoordinator

這個類的對象通常用NSManagedObjectModel的對象來初始化, 這個類抽象出不同的存放方式, 最經(jīng)常用的是NSSQLiteStoreType.

NSManagedObjectContext

這個類的對象又用NSPersistentStoreCoordinator的對象來初始化, 它里面有些方法來添加, 刪除NSManagedObject

NSFetchRequest

通常用NSEntityDescription來構(gòu)造查詢, 也就指定查詢那個表格, 另外可以指定排序.

CoreData的設(shè)計(jì)中, 下一層有相應(yīng)的屬性指向上一層, 所以NSManagedObject有屬性得到NSEntityDescription, NSEntityDescription有屬性得到NSManagedObjectModel.

至于類

NSFetchedResultsController, 只是又封了一下, 和NSFetchRequest合起來使用, 方便取數(shù)據(jù), 另外和NSManagedObjectContext關(guān)聯(lián), 當(dāng)數(shù)據(jù)庫發(fā)生變化的時候收到通知.

這文章只初步梳理了一下CoreData各類的關(guān)系, 各類的方法還需要一一研究. 文章最開始說CoreData是對sqlite數(shù)據(jù)庫的一個封裝, 不是嚴(yán)格的, CoreData不一定用sqlit來實(shí)現(xiàn), 但他們之間確實(shí)有種對應(yīng)關(guān)系.

小結(jié):關(guān)于淺談iPhoneCoreData 框架的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 博客園
相關(guān)推薦

2011-07-18 13:56:19

2009-09-22 17:38:25

Jobs框架

2009-06-29 17:17:57

Spring

2011-07-08 16:43:46

iPhone Cocoa 多線程

2015-07-27 09:25:45

core data

2011-07-29 14:48:48

iPhone開發(fā)

2011-08-05 14:25:11

iPhone 架構(gòu) 音頻

2011-04-22 09:26:57

MVC設(shè)計(jì)

2011-08-31 13:27:52

AndroidPhoneGap

2009-07-22 13:24:24

ASP.NET MVC

2012-06-25 09:28:42

.NET可逆框架

2011-07-20 14:53:28

iPhone NSLocalize 國際化

2011-03-09 09:44:15

JavaMina框架

2009-06-04 07:55:08

Struts框架簡介Struts

2017-08-04 11:41:53

Javathreadpool框架

2017-08-07 20:50:27

JavaForkJoin

2009-04-24 09:43:09

.NETASP.NET框架

2015-03-12 09:51:09

CoreDataiCloud

2011-07-25 14:20:52

iPhone 拍照 照片庫

2009-05-12 09:54:09

JavaRestCoC
點(diǎn)贊
收藏

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