Xcode8使用CoreData

2019-10-14  本文已影响0人  小鲜肉老腊肉都是肉

1.新建项目,勾选Use Core Data

image

2.选中xxx.Xcdatamodeld文件,点击序号2处的按钮,会在3处生成实体,修改实体的名字。点击4处的+新建属性(也可以点击右下角的Add

Attibute来新建属性),修改属性的类型。

image

3.在Xcode8下,xcode会自动生成数据库了,可以直接通过#import"实体名+CoreDataClass.h"导入使用了。

旧版本Xcode,需要进行下面的操作:选中xxx.Xcdatamodeld,点击Editor,选择Creat NSManagerObject Subclass,会在4处自动生成四个文件,然后通过#import导入需要使用CoreData的类。

image

上面这一步也可以在Xcode8中操作,操作完会在上图的4处生成四个文件,但是按照上面的步骤操作完后编译会报错,按照下图设置3处为Manrual/None。

image

需要注意的是:在Xcode8下,不执行第3步,而是直接通过#import使用也可以,只不过不会在工程中生成四个文件;在旧版本Xcode通过第三步生成的四个文件为“实体名”.h、“实体名”.m、“实体名+CoreDataClass”.h、“实体名+CoreDataClass”.m,而在Xcode8中通过第3步生成的四个文件名为“实体名+CoreDataProperties”.h、“实体名+CoreDataProperties”.m、“实体名+CoreDataClass”.h、“实体名+CoreDataClass”.m。

4.在使用CoreData的类导入头文件使用CoreData

//取到AppDelegate对象

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

//创建一个实体类的对象

Student*Student=NSEntityDescriptioninsertNewObjectForEntityForName:@"Student"inManagedObjectContext:appDelegate.persistentContainer.viewContext];

//赋值

Student.age =

18; Student.name = @"陈冠希";Student.sex = @"女";

//保存数据

[appDelegate saveContext];

AppDelegate * appDelegate = [UIApplicationsharedApplication].delegate;

//创建一个请求查询对象

NSFetchRequest * request = [[NSFetchRequestalloc]initWithEntityName:@"Student"];

//保存查询结果

NSArray * resArr = [appDelegate.persistentContainer.viewContextexecuteFetchRequest:request error:NULL];

//遍历来删除需要删除的数据

for (Student * stu inresArr) {

//查询过程可以用for循环或者谓词来实现--此处查询用for循环

if ([stu.sex isEqualToString:@"女"]){

[appDelegate.persistentContainer.viewContextdeleteObject:stu];}}

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

//创建一个请求查询对象

NSFetchRequest* request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];

//查询条件

NSPredicate*

predicate=[NSPredicate predicateWithFormat:@"name==%@",@"陈冠希"];

[requestsetPredicate:predicate];

//保存查询结果--//查询过程可以用for循环或者谓词来实现--此处查询用谓词

NSArray* resArr = [appDelegate.persistentContainer.viewContextexecuteFetchRequest:request error:NULL];

//更新

for (Student*user in resArr) {

[user setSex:@"男"];}

//保存数据--貌似不用保存也可以

[appDelegate saveContext];

查—这儿没有设置查询条件,可以用谓词设置查询条件查询

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;

NSFetchRequest* request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];

NSArray* resArr = [appDelegate.persistentContainer.viewContextexecuteFetchRequest:request error:NULL];

for (Student *obj in resArr) {

NSLog(@"姓名:%@,年龄:%d,性别:%@",obj.name,obj.age,obj.sex);

}

上一篇下一篇

猜你喜欢

热点阅读