CoreData 学习(二)

在学习一中用的一个方便的第三方库MagicalRecord来使用CoreData,这种方式虽然简单,易掌握,并且函数丰富。但是,相应的也不可避免的产生一些问题:
1.库中包含很多我们不需要的东西
2.无法对CoreData框架进行全面掌握,不利于学习
因此,还是需要学习自己在项目中添加和使用CoreData,步骤如下:
1.创建model:New File -> Core Data -> Data Modle
2.引入CoreData框架:Build Phases -> Link Binary With Libraries -> +
3.添加三个属性:

@property(nonatomic,strong) NSManagedObjectModel *managedObjectModel;
@property(nonatomic,strong) NSManagedObjectContext *managedObjectContext;
@property(nonatomic,strong) NSPersistentStoreCoordinator *persistentStoreCoordinator;

4.实现这三个属性
(1)managedObjectModle:数据模型,根据第一步的模型来实现

_managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle mainBundle]]];
//我将创建的模型文件 .xcdatamodeld 放在了工程目录下面,因此bundle就是mainBundle

(2)实现persistentStoreCoordinator:存储相关类,根据model将运行时存储在managedObjectContext中的数据存储进sqlite文件

//appictionDocumentsDirectory 函数作用是获取沙盒中Document文件的路径
NSURL *storeUrl = [NSURL fileURLWithPath:[[self applictionDocumentsDirectory] stringByAppendingPathComponent:@"MyData.sqlite"]];
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
NSError *err = nil;
[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&err]

(3)实现managedObjectContext:managed object 的上下文

_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:self.persistentStoreCoordinator];

完成前面几步就已经配置好了CoreData了,下面是使用CoreData
1.创建entity:选中第一步穿件的.xcdatamodeld文件 -> Add Entity ->添加属性
这里写图片描述
2.创建NSManagedObject对象:Team

Team *team = [NSEntityDescription insertNewObjectForEntityForName:@"Team" inManagedObjectContext:self.managedObjectContext];
//这一步就创建了一个新的NSManagedObject对象Team
//然后设置team对象属性
team.name = @"team1";
team.city = @"CD";
//此时对象存储在运行内存中,如果想要将其存入数据库还要下面的操作
NSError *err = nil;
[self.managedObjectContext save:&err];

3.查询数据库中的对象,使用NSFetchRequest

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityName:@"Team" inManagedObjectContext:self.managedObjectContext]];
NSError *err = nil;
NSArray *resultArr = [self.managedObjectContext executeFetchRequest:fetchRequest error:&err];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值