亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS-CoreData數據庫管理利器!

2019-11-14 20:44:46
字體:
來源:轉載
供稿:網友

1.前文                              

上次用SQLite3實現了數據管理,這次準備用CoreData來實現。

Core Data 是iOS SDK 里的一個很強大的框架,允許程序員以面向對象的方式儲存和管理數據。使用Core Data框架,程序員可以很輕松有效地通過面向對象的接口管理數據

相比SQLite3來說,用CoreData更有利于程序員來管理數據,

除了開頭的準備工作略微繁瑣點,后面的操作都很方便。

而且在CoreData在數據操作過程中,無需編寫任何SQL語句,這一點和java里的hibernate框架類似。

那么,下面我就直接說說它的實現步驟。

 

2.CoreData實現的主要步驟                    

2.1.要使用Core Data,首先需要導入CoreData框架                  

表結構:NSEntityDescription

表記錄:NSManagedObject

數據庫存放方式:NSPersistentStoreCoordinator(持久化存儲協調者)

數據庫操作:NSManagedObjectContext(被管理的對象上下文)

2.2.接著要使用Code Data,首先需要定義模型文件,描述應用程序中的所有實體(Entities)

 

2.3.創建連接數據庫                                  

  1. 首先需要創建一個操作數據庫的上下文。NSManagedObjectContext
  2. 操作數據庫的上下文需要設置一個調度者屬性,這個調度者是用來將圖形化建立的模型和數據庫聯系起來。
  3. 給調度者添加一個需要聯系的數據庫。

  

 1 // Merging合并可以將圖形化建立的所有Model匯總到一個數據庫文件中 2     NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; 3      4     // 調度者的實例化,需要Model 5     NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; 6      7     // 數據庫是一個文件,持久化連接的文件 8     NSError *error = nil; 9     NSURL *url = [@"my.db" appendDocumentDirURL];10     11     // 添加持久化存儲的數據庫12     [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];13     14     if (error == nil) {15         NSLog(@"數據庫建立成功");16         17         // 獲取到數據庫操作的上下文,類似于SQLite的句柄18         _sharedContext = [[NSManagedObjectContext alloc] init];19         20         // 讓上下文記錄住存儲調度21         _sharedContext.persistentStoreCoordinator = store;22     } else {23         NSLog(@"數據庫建立失敗");24     }

2.4.添加,更新,刪除                                   

添加:

1.新建實體 INST (插入)

1    Person *p = [[Person alloc] init]

 

2.設置實體的屬性

1 // 設置對象內容2     person.name = _nameText.text;3     person.phoneNo = _phoneText.text;4     person.QQ = _qqText.text;5     person.weibo = _weiboText.text;

 

3.保存上下文

 1      //實體描述 2      [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context] 3  4     // 獲取上下文 5     NSManagedObjectContext *context = [[DataManager sharedDataManager] sharedContext]; 6  7     // 讓上下文保存 8     if ([context save:nil]) { 9         NSLog(@"保存成功");10         11         // 返回上級視圖控制器12         [self.navigationController popViewControllerAnimated:YES];13     } else {14         NSLog(@"保存失敗!");15     }

 

 

更新:

1.判斷是否已有一模一樣的模型

    //判斷  Person *person = _editPerson;    // 如果person == nil表示是新建用戶    if (person == nil) {        person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];    }

 

2.設置實體屬性

   person.name = _nameText.text;    person.phoneNo = _phoneText.text;    person.qq = _qqText.text;    person.weibo = _weiboText.text;

 

3.保存上下文

1     // 讓上下文保存2     if ([context save:nil]) {3         NSLog(@"保存成功");4         5         // 返回上級視圖控制器6         [self.navigationController popViewControllerAnimated:YES];7     } else {8         NSLog(@"保存失敗!");9     }

 

 

刪除

// 1. 首先找到要刪除哪條記錄        Person *person = 

 

 1 // 2. 刪除 2         NSManagedObjectContext *context = [[DataManager sharedDataManager] sharedContext]; 3          4         // 讓上下文刪除 5         [context deleteObject:person]; 6          7         // 上下文保存 8         if ([context save:nil]) { 9             NSLog(@"刪除成功!");10         } else {11             NSLog(@"刪除失敗!");12         }

2.4.查詢                                         

三.查詢

1.使用NSFetchedResultsController控制器

// 查詢結果控制器    NSFetchedResultsController *_fetchedResultsController;

 

 2.監控managed object context對象的改變,報告給delegate

1  // 設置代理2     _fetchedResultsController.delegate = self;

 

2.1當操作數據上下文的內容改變的時候,會自動調用抓取結果控制器的代理方法

1 #PRagma mark 查詢結果控制器代理方法2 - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller3 {4     // 新增、修改、刪除5     [self.tableView reloadData];6 }

 

3.創建控制器

一般來說,你會創建一個NSFetchedResultsController實例作為tableview的成員變量。初始化的時候,你提供四個參數:

1。 一個fetchrequest.必須包含一個sortdescriptor用來給結果集排序。

2。 一個managedobject context。 控制器用這個context來執行取數據的請求。

3。 一個可選的keypath作為sectionname??刂破饔胟eypath來把結果集拆分成各個section。(傳nil代表只有一個section)

4。 一個cachefile的名字,用來緩沖數據,生成section和索引信息。

1  NSFetchRequest *reqest = _fetchedResultsController.fetchRequest;

 

1      1> 查詢請求2      2> 數據庫上下文3      3> 表格中用于分組的字段名4      4> 緩存名稱5      */6     _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];

 

 

 

5.注意:一定要執行抓取請求,返回的數據在sections里,這個數組中裝的都是遵守NSFetchedResultsSectionInfo這個協議的對象。通過numberOfObjects就能獲取一組有多少數據對象了。

1   return [_fetchedResultsController.sections[0] numberOfObjects];

 

 

                                                              清澈Saup 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品福利无圣光在线一区| 国产精品福利在线观看| 亚洲精品久久久一区二区三区| 欧美日韩在线观看视频小说| 欧美中文字幕第一页| 成人精品在线视频| 欧美尺度大的性做爰视频| 亚洲国产福利在线| 国产精品激情av电影在线观看| 日韩av在线免费看| 欧美日韩免费在线观看| 亚洲天堂网在线观看| 国产精品国产三级国产专播精品人| 情事1991在线| 精品一区二区三区三区| 国产欧美日韩专区发布| 羞羞色国产精品| 中文字幕欧美国内| 国产日韩欧美日韩| 亚洲欧美一区二区激情| 欧美成人精品h版在线观看| 国产视频在线一区二区| 日韩风俗一区 二区| 俺去亚洲欧洲欧美日韩| 精品亚洲一区二区三区四区五区| 亚洲午夜精品久久久久久性色| 成人国产精品一区| 亚洲偷熟乱区亚洲香蕉av| 91亚洲va在线va天堂va国| 成人免费福利视频| 欧美日韩国产区| 欧美日韩国产成人在线观看| 精品久久久久久中文字幕一区奶水| 亚洲精品日韩久久久| 日韩欧美国产骚| 91视频免费网站| 色噜噜狠狠狠综合曰曰曰| 最好看的2019年中文视频| 2023亚洲男人天堂| 国精产品一区一区三区有限在线| 欧美精品video| 91美女片黄在线观看游戏| 亚洲精品视频中文字幕| 亚洲精品ady| 欧美一级bbbbb性bbbb喷潮片| 国产在线不卡精品| 国产精品国产三级国产专播精品人| 在线播放日韩欧美| 欧美激情视频一区| 一区二区亚洲精品国产| 2019av中文字幕| 国产精品久久久久久久7电影| 欧美一区亚洲一区| 国产日韩欧美成人| 亚洲欧美一区二区三区在线| 日韩欧美精品免费在线| 成人网址在线观看| 中文字幕v亚洲ⅴv天堂| 欧美一级淫片aaaaaaa视频| 欧美做受高潮电影o| 欧美日韩中文字幕综合视频| 国产日韩精品视频| 亚洲男人天堂九九视频| 久久久久久这里只有精品| 亚洲女性裸体视频| 久久亚洲一区二区三区四区五区高| 亚洲日韩欧美视频| 成人做爰www免费看视频网站| 日本午夜在线亚洲.国产| 国产偷国产偷亚洲清高网站| 91精品久久久久久久久久久| 亚洲欧美综合图区| 欧美日韩免费在线观看| 欧美又大又硬又粗bbbbb| 久久久免费精品视频| 亚洲网址你懂得| 亚洲香蕉av在线一区二区三区| 日韩在线观看av| 国产成人高清激情视频在线观看| 日韩亚洲精品电影| 九九视频这里只有精品| 91免费综合在线| 亚洲国产欧美一区| 久久最新资源网| 欧美色播在线播放| 国产精品视频区| 国产亚洲一级高清| 成人国产精品av| 午夜剧场成人观在线视频免费观看| 国产+人+亚洲| 日韩暖暖在线视频| 96精品久久久久中文字幕| 亚洲女成人图区| 国产日韩在线看片| 少妇高潮 亚洲精品| 69影院欧美专区视频| 欧美一级大胆视频| 国产日韩欧美在线视频观看| 欧美老女人xx| 欧美激情一区二区三区高清视频| 国内外成人免费激情在线视频网站| 国产精品r级在线| 5566日本婷婷色中文字幕97| 97在线视频免费播放| 亚洲日本中文字幕免费在线不卡| 欧美—级高清免费播放| 92版电视剧仙鹤神针在线观看| 九色精品免费永久在线| 日韩高清电影免费观看完整版| 亚洲精品欧美一区二区三区| 91精品视频在线| 夜夜嗨av一区二区三区四区| 久久久久久久久久av| 亚洲美女自拍视频| 日韩在线观看免费全| 久久国产精彩视频| 亚洲精品欧美极品| 97国产真实伦对白精彩视频8| 久久久久久91香蕉国产| 成人激情视频在线| 精品人伦一区二区三区蜜桃网站| 国产午夜精品视频免费不卡69堂| 最近2019年中文视频免费在线观看| 欧美午夜电影在线| 中文字幕少妇一区二区三区| 国产精品国产亚洲伊人久久| 欧美老少做受xxxx高潮| 亚洲性av网站| 国产精品自在线| 亚洲天堂一区二区三区| 日韩一区二区久久久| 精品magnet| 91国语精品自产拍在线观看性色| 欧美大片网站在线观看| 国产午夜精品视频免费不卡69堂| 日韩成人中文电影| 亚洲美女自拍视频| 欧美激情精品久久久久久| 日韩精品亚洲精品| 亚洲自拍偷拍第一页| 成人免费大片黄在线播放| 日韩av综合中文字幕| 精品久久久久久亚洲国产300| 一区二区三区黄色| 亚洲丁香久久久| 亚洲品质视频自拍网| 国产成人精品免费视频| 欧美日韩亚洲高清| 欧美人与性动交a欧美精品| 久久天天躁狠狠躁老女人| 正在播放亚洲1区| 欧美黑人一区二区三区| 久久久久久久久久国产| 国产欧美日韩免费| 日韩一区二区三区在线播放| 亚洲第一中文字幕在线观看| 国产精自产拍久久久久久| 国产91免费观看| 一二美女精品欧洲| 97国产精品久久| 国产98色在线| 91精品国产高清自在线看超| 欧美精品久久一区二区| 国产日韩av在线播放|