11-使用NSPersistentContainer搭建CoreData Stack
来源:互联网 发布:为什么胡歌没女友 知乎 编辑:程序博客网 时间:2024/06/05 10:24
在应用的开发中,一般我们只需要搭建一个CoreData Stack就可以了,并且一个标准的CoreData Stack是可以复用的。所以这里面我们可以封装成一个单利的工具类
HMCoreDataManager.h
#import <Foundation/Foundation.h>#import <CoreData/CoreData.h>#define kHMCoreDataManager [HMCoreDataManager shareInstance]@interface HMCoreDataManager : NSObject//单利类+(HMCoreDataManager*)shareInstance;/** CoreData Stack容器 内部包含: 管理对象上下文:NSManagedObjectContext *viewContext; 对象管理模型:NSManagedObjectModel *managedObjectModel 存储调度器:NSPersistentStoreCoordinator *persistentStoreCoordinator; */@property(nonatomic,strong)NSPersistentContainer *persistentContainer;//保存到数据库- (void)save;@end
- HMCoreDataManager.m
#import "HMCoreDataManager.h"@implementation HMCoreDataManager+ (HMCoreDataManager *)shareInstance{ static HMCoreDataManager *manager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager = [[HMCoreDataManager alloc] init]; }); return manager;}//懒加载NSPersistentContainer- (NSPersistentContainer *)persistentContainer{ if(_persistentContainer != nil) { return _persistentContainer; } //1.创建对象管理模型 // //根据某个模型文件路径创建模型文件// NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:@"Person" withExtension:@"momd"]]; //合并Bundle所有.momd文件 //budles: 指定为nil,自动从mainBundle里找所有.momd文件 NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; //2.创建NSPersistentContainer /** * name:数据库文件名称 */ _persistentContainer = [[NSPersistentContainer alloc] initWithName:@"sql.db" managedObjectModel:model]; //3.加载存储器 [_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription * description, NSError * error) { NSLog(@"%@",description); NSLog(@"%@",error); }]; return _persistentContainer;}- (void)save{ NSError *error = nil; [self.persistentContainer.viewContext save:&error]; if (error == nil) { NSLog(@"保存到数据库成功"); } else { NSLog(@"保存到数据库失败:%@",error); }}@end
- 使用
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //创建CoreData模型 Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context1]; //赋值 person.name = @"坤哥"; person.age = 18; //保存到数据库 [kHMCoreDataManager save];}
- 关于数据库的增删改查操作可以参考我的这篇博客http://blog.csdn.net/u013263917/article/details/51882611
0 0
- 11-使用NSPersistentContainer搭建CoreData Stack
- CoreData使用
- CoreData 使用
- 使用CoreData
- CoreData使用
- CoreData使用
- CoreData使用
- CoreData 使用
- CoreData 使用
- Coredata使用
- CoreData 欢迎来到CoreData 使用。
- CoreData NSPredicate在CoreData中的使用
- CoreData使用须知
- CoreData的使用
- CoreData简单使用
- coreData 使用分析
- CoreData - Mogenerator 的使用
- CoreData 简单使用事例
- Android开发第1天
- Leetcode 113. Path Sum II (Medium) (cpp)
- 09-CoreData iOS10.0变化
- Range Sum Query - Immutable
- 10-NSPersistentContainer介绍
- 11-使用NSPersistentContainer搭建CoreData Stack
- 12-CoreData操作大量数据时的注意细节
- 13-NSPersistentContainer性能比较
- 14-CoreData兼容iOS9和iOS10
- BeautifulSoup的高级应用 之 find findAll
- 搬家了,以后 在 www.JiFei.co 上写文章了。。。
- LeetCode 465. Optimal Account Balancing
- Leetcode 131. Palindrome Partitioning (Medium) (cpp)
- Volley 解析