iOS coreData入门

1.创建程序时勾选coredata

2.在core.xcdatamodeld文件中建立表User

使用时,先为User表创建modal类,继承自NSManagedObject

在AppDelegate中会有自动生成的几个属性用来数据库访问等



数据库增删改查过程:先将结果查询出来,在查询出来的结果上进行数据操作,最后再保存回去

1.增

User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];   // 返回插入的数据项
    user.name = @"gaoxinchuan";    // 设置属性内容
    user.age  = [NSNumber numberWithInt:6];
    
    NSError *error = nil;
    BOOL isSave =   [self.managedObjectContext save:&error]; // 保存即可
    if (!isSave) {
        NSLog(@"error:%@,%@",error,[error userInfo]);
    }
    else{
        NSLog(@"保存成功");
    }

2.删

// 实现原理
    // 将结果查询出来,在查询出来的结果上操作,最后再保存回去
    NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];        // 设置查询集合
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setIncludesPropertyValues:NO];
    [request setEntity:description];
    NSError *error = nil;
    NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error]; // 进行查询
    if (!error && datas && [datas count])
    {
        for (NSManagedObject *obj in datas)
        {
            [self.managedObjectContext deleteObject:obj];   // 删除数据项
        }
        if (![self.managedObjectContext save:&error])       // 保存最后结果,同步到数据库
        {
            NSLog(@"error:%@",error);
        }
    }

3.改

NSEntityDescription *description = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setIncludesPropertyValues:NO];
    [request setEntity:description];
    NSError *error = nil;
    NSArray *datas = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (!error && datas && [datas count])
    {
        for (User *obj in datas)
        {
            obj.name = @"haizeiwang";     // 修改数据
        }
        if (![self.managedObjectContext save:&error])   // 同步到数据库
        {
            NSLog(@"error:%@",error);
        }
    }

4.查

//创建取回数据请求
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.predicate = [NSPredicate predicateWithFormat:@"name == @‘gaoxinchuan‘"];
    //设置要检索哪种类型的实体对象
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"User"inManagedObjectContext:self.managedObjectContext];
    //设置请求实体
    [request setEntity:entity];
    //指定对结果的排序方式
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name"ascending:NO];
    NSArray *sortDescriptions = [[NSArray alloc]initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptions];
    NSError *error = nil;
    //执行获取数据请求,返回数组
    NSMutableArray *mutableFetchResult = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
    if (mutableFetchResult == nil) {
        NSLog(@"Error: %@,%@",error,[error userInfo]);
    }
    self.dataArray = mutableFetchResult;
    for (User *dog in self.dataArray) {
        NSLog(@"age:%@--name:%@",dog.age,dog.name);
    }

5.可以设置查询条件:NSPredicate

时间: 2024-10-03 09:42:32

iOS coreData入门的相关文章

iOS开发入门教程_iOS开发视频教程

iOS开发入门教程 (Object-C.网络编程.多线程.蓝牙.二维码.Cocos2D.OpenGL)适合人群:初级课时数量:34课时用到技术:IOS,Object-C,OpenGL,XCode,Cocos 2D涉及项目:Cocos+2D.Game Kit蓝牙数据处理等咨询QQ:1840215592 iOS开发入门教程详细查看:http://www.ibeifeng.com/goods-471.html1.1.课程目标iOS开发入门教程内容的目标是初学者入门,让入门者提高,让所有人符合企业招聘的

【IOS】IOS快速入门之OC语法

Objective-C 是 C 语言的超集 您还可以访问标准 C 库例程,例如在 stdlib.h 和 stdio.h 中声明的那些例程. Objective-C 还是一种非常动态的程序设计语言,而且这种动态是其最大优势.这种动态体现在它允许在运行应用程序时(即运行时)才去确定其行为,而不是在生成期间就已固定下来.因此,Objective-C 的动态机制让程序免受约束(编译和链接程序时施加的约束):进而在用户控制下,将大多数符号解析责任转移到运行时. 当您想要在源代码中包括头文件时,请在头文件或

iOS开发入门——17条 Swift 最佳实践规范(下)

文章来源:http://www.zretc.com/technologyDetail/433.html 承接上文:iOS开发入门--17条 Swift 最佳实践规范(上) 9.单例(Singletons) 在Swift中单例是很简单的: class ControversyManager { static let sharedInstance = ControversyManager()} Swift 的 runtime 会保证单例的创建并且采用线程安全的方式访问. 单例通常只需要访问"share

iOS开发入门——17条 Swift 最佳实践规范(上)

文章来源:http://www.zretc.com/technologyDetail/432.html 前言 这篇IOS开发入门文章是我根据在 SwiftGraphics 工作时的一系列笔记整理出来的.文中大多数建议是经过深思熟虑的,但仍可以有其他类似的解决方法.因此,如果其他方案是有意义的,这些方案会被添加上去. 这个最佳实践不是强加或者推荐 Swift 在程序.面向对象或者函数风格上的应用.更重要的是,这里要讲述的是务实的方法.如有需要的话,某些建议可能会集中在面向对象或者实用的解决方法.

做QA的日子——iOS测试入门(四)

坦言,做QA的这半年我没有成长,就算有成长也很少,我很难过,和身边的人讲其实并没有谁能真正理解自己的难过,其实还是自己不够努力,对自己不够狠,曾经觉得自己不够幸运,想有一个更好的指路人,其实这样的想法是不对的,哪有那么多的指路人,遇到了是你万幸,没有遇到你自己就做你自己的指路人,用自己的驱动力驱动自己成长,就算慢一些又怎样,当有这样的指路人助你一臂之力的时候,或许你会更加珍惜现在所拥有的. 做QA测试,很多时候是站在后方支持整个团队的,很有可能很多时候会被别人看不起,别人会说,ta不就是一个测试

iOS coredata 数据库升级 时报Can't find model for source store

在coredata 数据库结构被更改后,没根据要求立即建立新version,而是在原version上进行了小修改,之后才想起来建立新版本.并通过以下代码合并数据库, NSError *error = nil; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

iOS开发入门知识点总结

Objective-C 一门动态语言,动态两个字主要就体现在我们调用方法的时候,运行时回动态的查找方法,然后调用相应的函数地址.运行时是整个Objective-c程序的基石,有了它我们的程序才能正常运行起来. NSObject是Cocoa中绝大部分类的基类,它主要是提供了序列话,拷贝对象,以及支持运行时动态识别的框架. 另外,在OC中,一切皆为指针. 在Objective-c中每一个类对象最开始的位置都会有一个isa指针,该指针指向一块内存区域,该部分主要包含两部分信息: 1.指向父类的指针.

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc

iOS开发入门教程

iOS开发入门教程 (Object-C.网络编程.多线程.蓝牙.二维码.Cocos2D.OpenGL)http://www.ibeifeng.com/goods-471.html咨询QQ2110053820课程讲师:群雄 课程分类:IOS适合人群:初级课时数量:34课时更新程度:完成用到技术:IOS,Object-C,OpenGL,XCode,Cocos 2D涉及项目:Cocos+2D.Game Kit蓝牙数据处理等 1.1.课程背景随着移动互联网时代的到来,iPhone作为智能手机旗舰版,iO