iOS進階課程 -- 進階資料持久化CoreData

來源:互聯網
上載者:User

一 CoreData資料庫架構的曆史CoreData資料持久化架構是Cocoa API的一部’,首次在iOS3.0版本的系統中出現,它允許按照實體 — 屬性 — 值模型組織資料, 並以XML,二進位檔案或者SQLite資料檔案的格式持久化資料.
二 CoreData資料庫架構的常用類實體管理類: NSManagedObject實體描述類: NSEntityDescription資料管理器類: NSManagedObjectContext資料連線器類: NSPersistentStoreCoordinator資料模型器類: NSManagedObjectModel
三 CoreData類之間的關係
四 使用CZ喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcmVEYXRhyv2+3b/iv/K83LXEvPK1pbe9yr08L2gzPgo8cD48YnI+CjwvcD4KPGgzPrTmtKLOxLz+us2z1r7Du6+05rSiPC9oMz4KPGgzPrTmtKLOxLz+OiDTw8C0tOa0orrNudzA7cr9vt21xM7EvP4saU9T1tDWp7PWM9bWtOa0osDg0M06IE5TU1FMaXRlU3RvcmVUeXBlLCBOU0JpbmFyeVN0b3J5VHlwZSwgTlNJbk1lbW9yeVN0b3JlVHlwZTwvaDM+CjxoMz6z1r7Du6+05rSiKE5TUGVyc2lzdGVudFN0b3JlKSA6IMrHttTKtbzKzsS8/rXE0rvW1k9iamVjdGl2ZaGqQyCx7cq+t73KvSwg0ru49rG7tdey47fi17C6w7XEwOAs08PT2rTmtKLK/b7dPC9oMz4KPHA+PGJyPgo8L3A+CjxoMz6z1r7Du6+05rSi1vrA7TwvaDM+CjxoMz5OU1BlcnNpc3RlbnRDb29yZGluYXRvciwgQ29yZURhdGG1xLrL0MTA4DwvaDM+CjxoMz6z1r7Du6+05rSi1vrA7bXEz8Ky48rHs9a+w7uvtOa0osr9vt0sIMnPsuPKx7PWvsO7r7TmtKLJz8/CzsQ8L2gzPgo8aDM+yrXP1rTTz8Ky47vxyKHK/b7dLCDP8snPsuPM4bmpyv2+3TwvaDM+CjxoMz7T69auz+C52MGstcTKx9K7uPaxu7ncwO21xLbUz/PEo9DNPC9oMz4KPHA+PGJyPgo8L3A+CjxoMz6xu7ncwO221M/zyc/Pws7EPC9oMz4KPGgzPk5TTWFuYWdlZE9iamVjdENvbnRleHQsIENvcmVEYXRhINbQ08PT2rLZ1/e6zcq508PK/b7dLCC/ydLU09C24Lj2PC9oMz4KPGgzPtK7uPbB2cqxyv2+3b/iLCC4tNbGyv2+3bW9xNq05iwgsqKyu9Owz+zUrcq8yv2+3Swgs/23x8i3yM+xo7TmPC9oMz4KPGgzPkNvcmVEYXRht7W72LXEyv2+3crHvt/M5bXEttTP8ywgsrvKxyYjMjA1NDA7LiDS8rTLY29udGV4dLncwO21xMrHTlNNYW5hZ2VkT2JqZWN0ttTP8zwvaDM+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">// Override to support editing the table view.- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source //刪除資料庫裡的元素 [self.context deleteObject:[self.itemInfoArray objectAtIndex:indexPath.row]]; //刪除數組裡的元素 [self.itemInfoArray removeObjectAtIndex:indexPath.row]; //刪除Cell [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; //儲存更改 [self.context save:nil]; } else if (editingStyle == UITableViewCellEditingStyleInsert) { // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view } }

被管理的對象相關類NSManagedObjectMode, 被管理物件模型, 管理多個對象NSManagedObject, 被管理對象, CoreData 返回的資料模型, 被管理的對象是根據實體描述產生的NSEntityDescription, 實體描述類, 根據實體建立被管理對象Entity, 實體類, 試題是對檔案資料的描述. 被管理對象表示實體, 實體包含名稱, 屬性(欄位) 和關係, 實體的名稱通常與被管理對象名一致


資料查詢NSFetchRequest, 查詢請求, 可以做排序操作,也可以使用謂詞

//從CoreData中取出資料    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"AddCoreData"];

NSSortDescriptor, 排序操作

//定序 ascending為YES 升序  NO 為降序    NSSortDescriptor * sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"currentDate" ascending:YES];        [fetchRequest setSortDescriptors:@[sortDescriptor]]; //設定定序        //要求誰遵循定序    [self.context executeFetchRequest:fetchRequest error:nil];

NSManagedObjectContext根據NSFetchRequest查詢資料, 以數組形勢返回, 數組中包含被管理對象

//把得到的資料存放到數組裡    [self.itemInfoArray setArray:[self.context executeFetchRequest:fetchRequest error:nil]];

五 使用CoreData 資料庫架構的進階方式


模型版本升級和資料移轉CoreData支援隨著App開發演化而帶來的物件模型(ManagedObjectModel)升級或修改的管理.模型的改變將導致不相容(或不能開啟)以前版本建立的儲存. 如果你要改變你的模型,你就必須要改變現有儲存中的資料, 也就是資料存放區格式(store format) — 這被稱為遷移(migration)


總結CoreData資料架構的實現核心是持久化儲存棧與CoreData資料庫架構的所有互動都是通過NSManagedObjectContext完成的, NSManagedObjectContext管理操作NSManagedObjectContext中的資料是緩衝在記憶體中的副本, 要想達到持久化目的必須更新儲存.


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.