首页 > 代码库 > 关于CoreData的使用
关于CoreData的使用
托管对象必须是NSManagedObject或者NSManagedObject子类的任一实例。NSManagedObject能够表述任何实体。它使用一个私有的内部存储,以维护其属性,并实现托管对象所需的所有基本行为。托管对象有一个指向实体描述的引用。实体描述表述了实体的元数据,包括实体的名称,实体的属性和实体之间的关系。可以创建NSManagedObject子类来实现实体的其他行为。
7.1.3. 基本实现
1、指定存储数据文件
?View Code OBJC
1234 | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths lastObject]; NSString *persistentStorePath = [[documentsDirectory stringByAppendingPathComponent:@"TopSongs.sqlite"] retain]; |
2、创建托管对象模型
?View Code OBJC
1 | NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; |
3、创建持久化存储协调器,并使用SQLite数据库做持久化存储
?View Code OBJC
1234 | NSURL *storeUrl = [NSURL fileURLWithPath:self.persistentStorePath];NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];NSError *error = nil;NSPersistentStore *persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]; |
4、创建托管对象上下文
?View Code OBJC
12 | NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init];[managedObjectContext setPersistentStoreCoordinator: self.persistentStoreCoordinator]; |
5、创建实体描述对象
?View Code OBJC
1 | NSEntityDescription *entityDescription = [[NSEntityDescription entityForName:@"Song" inManagedObjectContext: self.managedObjectContext] retain]; |
6、创建托管对象
?View Code OBJC
1 | NSManagedObject *managedObject = [[NSManagedObject alloc] initWithEntity:self.entityDescription insertIntoManagedObjectContext:self.managedObjectContext]; |
7、保存
?View Code OBJC
12 | NSError *saveError = nil;[self.managedObjectContext save:&saveError] |
8、创建获取数据请求
?View Code OBJC
12345 | NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];// 数据排序,Sort key为NSManagedObject托管对象的一个属性NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"" ascending:YES];NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];[fetchRequest setSortDescriptors:sortDescriptors]; |
9、获取持久化存储中的数据,并对数据进行缓存
?View Code OBJC
12345678 | NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:self.fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@""]; NSError *error;BOOL success = [self.fetchedResultsController performFetch:&error]; |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。