您的位置:首页 > 移动开发 > IOS开发

IOS coredata基础

2017-05-05 17:14 253 查看
coredata是OC语言对于SQlite的又一次封装,支持自定义对象添加到关系型数据库的表中。sqlite只支持基础数据类型的添加

下面我们一起通过一个demo来学习一下如何使用coredata

首先新建工程需要勾选上use coredata



然后添加实体,也就是要添加的一张表



按照下图步骤修改实体名,以及添加实体,也就是表中的字段



生成实体,也就是生成表



编译调试,如果报错删除下图对应代码





好了,准备工作完成,接下来我们就可以使用coredata了。还是使用增删改查功能。

首先导入需要的头文件

#import "Person+CoreDataProperties.h"
#import "AppDelegate.h"


case 0:{//增加数据
Person *p = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.persistentContainer.viewContext];
p.name = @"李四";
p.age = 32;

Person *p1 = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.persistentContainer.viewContext];
p1.name = @"李san";
p1.age = 11;

Person *p2 = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:app.persistentContainer.viewContext];
p2.name = @"旺旺";
p2.age = 21;

[app saveContext];

}

break;


case 1://删除
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSArray *persons = [app.persistentContainer.viewContext executeFetchRequest:request error:nil];

for (Person *p in persons) {
//                if ([p.name isEqualToString:@"李san"]) {
[app.persistentContainer.viewContext deleteObject:p];

[app saveContext];
//                }
}

}

break;


case 2://修改
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSArray *persons = [app.persistentContainer.viewContext executeFetchRequest:request error:nil];

for (Person *p in persons) {

if ([p.name isEqualToString:@"李四"]) {
p.name = @"王五";
p.age = 88;

[app saveContext];

}

}

}
break;


case 3://查询
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSArray *persons = [app.persistentContainer.viewContext executeFetchRequest:request error:nil];

for (Person *p in persons) {
NSLog(@"%@ %d %@",p.name,p.age,p.objectID);
}

}

break;
}


下面我们来测试一下coredata使用情况

点击添加,再点击查询,结果如下:



然后点击删除,在查询



然后点击修改,在查询



完全符合预期。可以看到coredata可以正常使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: