XML屬性列表 —— PList程序員
NSKeyedArchiver 歸檔數據庫
Preference(偏好設置)框架
SQLite3 fetch
Core Dataurl
Core Data 是iOS SDK 裏的一個很強大的框架,容許程序員以面向對象的方式儲存和管理數據。使用Core Data框架,程序員能夠很輕鬆有效地經過面向對象的接口管理數據spa
Core Data框架提供了對象-關係映射(ORM)的功能,即可以將OC對象轉化成數據,保存在SQLite3數據庫文件中,也可以將保存在數據庫中的數據還原成OC對象代理
在數據操做過程當中,無需編寫任何SQL語句orm
要使用Core Data,須要導入CoreData框架對象
要使用Code Data,首先須要定義模型文件,描述應用程序中的全部實體(Entities)排序
所謂實體,是跟數據庫進行映射的對象
NSManagedObjectContext:負責應用和數據庫之間的交互(CRUD)
NSPersistentStoreCoordinator:添加持久化存儲庫(如SQLite數據庫),是物理數據存儲的物理文件和程序之間的聯繫的橋樑,負責管理不一樣對象上下文
NSManagedObjectModel:被管理的對象模型
NSEntityDescription:實體描述
// 1. 實例化持久化的存儲
// 1.1 從Bundle中加載被管理的數據模型
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
// 1.2 實例化持久化存儲調度
NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
// 1.3 添加持久化存儲(SQLite)
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
// 管理對象上下文
_context = [[NSManagedObjectContext alloc] init];
_context.persistentStoreCoordinator = store;
執行查詢以後
1. Sections屬性中記錄了分組狀況,若是沒有指定分組,則是全部對象!
Sections對象遵照了NSFetchedResultsSectionInfo協議!
2. 使用objectAtIndexPath能夠直接取出查詢的結果。
3. 設置查詢結果控制器的代理方法,而且實現
controllerDidChangeContent:(NSFetchedResultsController *)controller
代理方法,能夠在數據庫內容發生變化時,從新刷新表格便可
全部數據變化,盡在掌控!
NSManagedObjectContext *context = [[DataManager sharedDataManager] sharedContext];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
// 定義查詢排序
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
request.sortDescriptors = @[sort];
// 定義查詢結果控制器
_fetchedResultController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
[_fetchedResultController performFetch:&error];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
request.predicate = [NSPredicate predicateWithFormat:@"%K LIKE '*52*' OR name CONTAINS '三'", @"phoneNo"];
NSArray *array = [_context executeFetchRequest:request error:nil];