iOS CoreData

CoreData核心對(duì)象

  • 實(shí)體管理類(lèi):NSManagedObject
  • 實(shí)體描述類(lèi):NSEntityDescription
  • 數(shù)據(jù)管理器類(lèi):NSManagedObjectContext
  • 數(shù)據(jù)連接器類(lèi):NSPersistentStoreCoordinator
  • 數(shù)據(jù)模型器類(lèi):NSManagedObjectModel

CoreData核心類(lèi)的關(guān)系

CoreData核心類(lèi)的關(guān)系

CoreData數(shù)據(jù)框架的核心對(duì)象

持久化儲(chǔ)存和存儲(chǔ)文件

  • NSPersistentStore:持久化數(shù)據(jù)儲(chǔ)存惹恃,是對(duì)實(shí)際文件的一種Objective-C的一種表示方式张症,一個(gè)被封裝好的底層類(lèi),用于存儲(chǔ)數(shù)據(jù)。

被管理上下文

  • NSManagedObjectContext被管理對(duì)象上下文拣宏,在CoreData中用于操作和使用數(shù)據(jù)姿鸿,負(fù)責(zé)應(yīng)用和數(shù)據(jù)庫(kù)之間的交互。
  • 數(shù)據(jù)庫(kù)的保存需要NSManagedObjectContext進(jìn)行save操作煎谍。
  • 數(shù)據(jù)的查詢(xún)需要NSManagedObjectContext進(jìn)行executeFetchRequest操作,返回值是數(shù)組龙屉。
  • CoreData提供的是對(duì)象關(guān)系映射呐粘,NSManagedObjectContext操作的都是NSManagedObject對(duì)象。

被管理對(duì)象相關(guān)類(lèi)

  • NSManagedObjectMode:被管理對(duì)象模型叔扼,管理多個(gè)對(duì)象事哭。
  • NSManagedObject:被管理對(duì)象,CoreData返回的數(shù)據(jù)模型瓜富,被管理的對(duì)象是根據(jù)實(shí)體描述生成的鳍咱。
  • NSEntityDescription:實(shí)體描述類(lèi)根據(jù)實(shí)體創(chuàng)建被管理對(duì)象。
  • Entity:實(shí)體類(lèi)与柑,實(shí)體是對(duì)文件數(shù)據(jù)的描述谤辜,被管理對(duì)象標(biāo)表示實(shí)體,實(shí)體包含名稱(chēng)价捧,屬性(字段)和關(guān)系丑念,實(shí)體的名稱(chēng)通常被管理對(duì)象名稱(chēng)一致。

數(shù)據(jù)查詢(xún)

  • NSFetchRequest:查詢(xún)請(qǐng)求结蟋,可以做排序操作脯倚,也可以使用謂詞。
  • NSManagedObjectContext:根據(jù)NSFetchRequest查詢(xún)數(shù)據(jù)嵌屎,以數(shù)組形式返回推正,數(shù)組中包含被管理對(duì)象(NSManagedObject)。
  • NSSortDescriptor:排序操作宝惰。

數(shù)據(jù)持久化的過(guò)程

  • 持久化數(shù)據(jù)的過(guò)程:context上下文將對(duì)被管理對(duì)象的子類(lèi)進(jìn)行的所有操作(包括增加植榕,刪除,更新等)進(jìn)行持久化的時(shí)候(調(diào)用save方法的時(shí)候)尼夺,將所有的操作交給持久化數(shù)據(jù)協(xié)調(diào)器(persistentStoreCoordinator)尊残,persistentStoreCoordinator(持久化數(shù)據(jù)協(xié)調(diào)器)會(huì)把對(duì)象類(lèi)型的數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制類(lèi)型的數(shù)據(jù)炒瘸,然后存儲(chǔ)到文件系統(tǒng)中。
  • 讀取過(guò)程:持久化數(shù)據(jù)協(xié)調(diào)器(persistentStoreCoordinator)從文件系統(tǒng)中讀取出二進(jìn)制的數(shù)據(jù)寝衫,根據(jù)實(shí)體對(duì)象轉(zhuǎn)換成對(duì)應(yīng)的對(duì)象類(lèi)型顷扩。將轉(zhuǎn)換好的數(shù)據(jù)交給上下文來(lái)操作。

示例代碼

往數(shù)據(jù)庫(kù)中添加元素

- (void)addObject{
    NSEntityDescription *description = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.delegate.managedObjectContext];
    Student *stu = [[Student alloc]initWithEntity:description insertIntoManagedObjectContext:self.delegate.managedObjectContext];
    stu.name = @"小明";
    stu.gender = @"男";
    [self.delegate saveContext];
    NSLog(@"%@",NSHomeDirectory());
}

修改元素

- (void)changeFromCoreData{
    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小明"];
    request.predicate = predicate;
    NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
    for (Student *stu in array) {
        stu.name = @"小李";
    }
    [self.delegate saveContext];
}

刪除元素

- (void)delegateFromCoreData{
    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小明"];
    request.predicate = predicate;
    NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
    for (Student *stu in array) {
        [self.delegate.managedObjectContext deleteObject:stu];
    }
    [self.delegate saveContext];
}

查詢(xún)?cè)?/h2>
- (void)selectFromCoreData{
    NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
    NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
    NSLog(@"%@",array);
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慰毅,一起剝皮案震驚了整個(gè)濱河市屎即,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌事富,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乘陪,死亡現(xiàn)場(chǎng)離奇詭異统台,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)啡邑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)贱勃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人谤逼,你說(shuō)我怎么就攤上這事贵扰。” “怎么了流部?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵戚绕,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我枝冀,道長(zhǎng)舞丛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任果漾,我火速辦了婚禮球切,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绒障。我一直安慰自己吨凑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布户辱。 她就那樣靜靜地躺著鸵钝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪焕妙。 梳的紋絲不亂的頭發(fā)上蒋伦,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音焚鹊,去河邊找鬼痕届。 笑死韧献,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的研叫。 我是一名探鬼主播锤窑,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚷炉!你這毒婦竟也來(lái)了渊啰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤申屹,失蹤者是張志新(化名)和其女友劉穎绘证,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哗讥,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚷那,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杆煞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魏宽。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖决乎,靈堂內(nèi)的尸體忽然破棺而出队询,到底是詐尸還是另有隱情,我是刑警寧澤构诚,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布蚌斩,位于F島的核電站,受9級(jí)特大地震影響范嘱,放射性物質(zhì)發(fā)生泄漏凳寺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一彤侍、第九天 我趴在偏房一處隱蔽的房頂上張望肠缨。 院中可真熱鬧,春花似錦盏阶、人聲如沸晒奕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)脑慧。三九已至,卻和暖如春砰盐,著一層夾襖步出監(jiān)牢的瞬間闷袒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工岩梳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囊骤,地道東北人晃择。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像也物,于是被迫代替她去往敵國(guó)和親宫屠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容