關(guān)于總結(jié)CoreData的不同見解,CoreData你深入了解了嗎

什么是CoreData?

CoreData是iOS5之后,蘋果原生的用于對象化管理數(shù)據(jù),并且持久化的框架。

CoreData的原理是什么?

CoreData的技術(shù)堆棧是CoreData Stack,主要包括

NSManagedObjectContext 對象管理上下文: 負責管理模型的對象的集合

NSManagedObjectModel 被管理的對象模型: 負責管理對象模型

NSPersistentStoreCoordinator 存儲調(diào)度器: 負責將數(shù)據(jù)保存到磁盤的

它們?nèi)齻€之間的關(guān)系,大概如下:


CoreData的增刪改查,大家都已經(jīng)熟悉,這里主要介紹的是NSFetchedResultsController與CoreData的混用。NSFetchedResultsController是用來管理查詢結(jié)果的功能類控制器,為TableView而生。

NSFetchedResultsController如何與tableView關(guān)聯(lián)?

通過在tableView數(shù)據(jù)源的方法來取出數(shù)據(jù)來給cell的屬性賦值。

id<NSFetchedResultsSectionInfo> info = self.fetchController.sections[indexPath.section];

//取出數(shù)據(jù)

Contect *contect = [info objects][indexPath.row];

cell.textLabel.text = contect.name;

cell.detailTextLabel.text = contect.phoneNum;

NSFetchedResultsController的代理有很多:

controller didChangeObject:atIndexPath: forChangeType: newIndexPath:(控制器里的模型對象發(fā)生改變時調(diào)用,會告訴你之前和之后的索引,改變類型(插入/移動/刪除等)

controller:didChangeSection:atIndex:forChangeType:(對象模型section改變時調(diào)用)

只要運用得當,會大大提高編碼效率。


CoreData有個直接獲取對應objectID的數(shù)據(jù),不過一定要在儲存之后調(diào)用,因為每次儲存后,objectID都會改變.

先保存objectID

self.objectID = [p objectID];p為需要對象

之后就可以根據(jù)這個objectID去獲取p了。

網(wǎng)上對清空CoreData的存儲的數(shù)據(jù),方法很多,下面提出一個快捷方法,不知道會不會引起大問題,如果有,請友情提醒。

流行的思路是全部查找,然后刪除。當數(shù)據(jù)量大時,這樣效率會比較低;所以可以試試直接把表或者數(shù)據(jù)庫全刪除了。再重建一個名字,路徑一樣的數(shù)據(jù)庫。親測比較快。

下面附上代碼鏈接。

代碼下載地址

下載麻煩點個星

本文為原創(chuàng),轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容