什么是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)載請注明出處。