`
wx1568847608
  • 浏览: 13705 次
文章分类
社区版块
存档分类
最新评论

coreData的增删改查

 
阅读更多

#import "ViewController.h"

#import "Student.h"

 

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>

{

    NSManagedObjectContext * _context; //上下文

    NSIndexPath * _selectIndexPath; //记录选中的cell

}

 

@property (nonatomic,strong) NSMutableArray * dataSource;

@property (weak, nonatomic) IBOutlet UITextField *name;

@property (weak, nonatomic) IBOutlet UITextField *age;

@property (weak, nonatomic) IBOutlet UITableView *tableView;

 

@end

 

@implementation ViewController

 

-(NSMutableArray*)dataSource

{

    if (_dataSource == nil) {

        _dataSource = [NSMutableArray array];

    }

    return _dataSource;

}

 

- (void)viewDidLoad {

    [super viewDidLoad];

  

    //1、准备coreData,获取贯通上层实体和底层数据库的上下文

    [self prepareCoreData];

    

    //2、加载所有的数据

    [self loadData];

}

 

-(void)loadData

{

    //查询保存的所有数据

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    //设置你要查询的实体

    request.entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_context];

    //具体的查询条件(不设)

    

    //执行查询

    NSArray * array = [_context executeFetchRequest:request error:nil];

    //先清空数据源

    [self.dataSource removeAllObjects];

    [self.dataSource addObjectsFromArray:array];

    [self.tableView reloadData];

}

 

-(void)prepareCoreData

{

    //1、获取momd文件的路径

    NSString * path = [[NSBundle mainBundle]pathForResource:@"Model" ofType:@"momd"];

    //2、从momd文件中取出所有的实体

    NSManagedObjectModel * models = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path]];

    //3、创建持久化的数据协调器,创建本身就已经关联了上层实体

    NSPersistentStoreCoordinator * coordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:models];

    

    //4、让协调器关联数据库

    //指明数据库的路径

    NSString * dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/StudentDB"];

    //关联

    NSError * error;

    [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:dbPath] options:nil error:&error];

    if (error == nil) {

        NSLog(@"关联成功");

    }

 

    //5、创建上下文

    _context = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSMainQueueConcurrencyType];

    _context.persistentStoreCoordinator = coordinator;

 

}

 

//添加

- (IBAction)add:(id)sender {

    //学生的空实体

    Student * stu = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:_context];

    //对个属性赋值

    stu.name = self.name.text;

    stu.age = [NSNumber numberWithInteger:[self.age.text integerValue]];

    

    //使用上下文,保存操作。

    BOOL success =  [_context save:nil];

    if (success == YES) {

        NSLog(@"添加新对象成功");

        //刷新数据

        [self loadData];

    }

}

 

- (IBAction)delete:(id)sender {

    //拿到你要删除的对象

    Student * stu = self.dataSource[_selectIndexPath.row];

    //2、删除

    [_context deleteObject:stu];

    

    //3、保存执行的操作

    BOOL success =  [_context save:nil];

    if (success == YES) {

        //刷新列表

        [self loadData];

    }

}

 

- (IBAction)update:(id)sender {

    //插叙要修改的对象

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    //设置查询实体

    request.entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_context];

    //设置查询谓语

   request.predicate = [NSPredicate predicateWithFormat:@"age<20"];

    

    //执行查询

    NSArray * array = [_context executeFetchRequest:request error:nil];

    

    for (Student * stu in array) {

        stu.name = @"汉武大帝";

        stu.age = [NSNumber numberWithInteger:24];

    }

    

    //保存修改的结果

    BOOL success = [_context save:nil];

    if (success == YES) {

        NSLog(@"数据修改成功");

        [self loadData];

    }

}

 

- (IBAction)select:(id)sender {

    //查询要修改的对象

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    //设置查询实体

    request.entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:_context];

    //设置查询谓语

    request.predicate = [NSPredicate predicateWithFormat:@"age<24"];

    

    //执行查询

    NSArray * array = [_context executeFetchRequest:request error:nil];

    

    //显示

    [self.dataSource removeAllObjects];

    [self.dataSource addObjectsFromArray:array];

    [self.tableView reloadData];

    

}

 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return self.dataSource.count;

}

 

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell == nil) {

        cell = [[ UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];

    }

    Student * stu = self.dataSource[indexPath.row];

    cell.textLabel.text = stu.name;

    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",stu.age];

    

    return cell;

}

 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    _selectIndexPath = indexPath;

}

 

 

 

 

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

 

转载于:https://my.oschina.net/u/3389486/blog/868504

分享到:
评论

相关推荐

    CoreData增删改查

    在这个"CoreData增删改查"的主题中,我们将深入探讨如何使用CoreData进行基本的数据操作,包括添加(增)、删除(删)、修改(改)和查询(查)。 1. **增(Add)**: 当我们需要在应用中存储新数据时,首先创建一...

    CoreData增删改查的简单使用

    在这个“CoreData增删改查的简单使用”主题中,我们将深入探讨如何利用CoreData进行基本的数据操作,包括添加(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **创建(Create)**: 在...

    ios-CoreData 增删改查.zip

    简单实现了对数据的增删改查,都有注释,另外我还写了一篇简书,特别详细,简单粗暴,是人都看懂~~~ 简书: http://www.jianshu.com/p/7c1ac5ce614b github: https://github.com/ty82885279/CoreData

    coreData增删改查Demo

    在这个"coreData增删改查Demo"中,我们将探讨如何使用CoreData进行基本的数据操作,包括创建、读取、更新和删除(CRUD)。 1. 创建(Create) 在CoreData中,创建新记录通常涉及创建一个新的Managed Object Context...

    iOS CoreData 增 删 改 查 demo

    本教程通过一个简单的"增删改查"(CRUD)DEMO,深入讲解如何利用CoreData在iOS应用中进行数据操作。 一、CoreData基本概念 1. Managed Object Context(MOC):是CoreData的主要工作区,负责处理数据对象的创建、...

    IOS之分析网易新闻存储数据 CoreData的使用 增删改查

    本篇文章将深入探讨如何在iOS应用中使用CoreData进行数据的增删改查操作,并结合实例——分析网易新闻的存储数据来阐述其工作原理。 首先,让我们了解CoreData的基本概念。CoreData不是一个数据库,而是一个对象图...

    CoreData增删改查Demo

    CoreData的简单用法,增删改查。由于是一个Demo所以也没怎么进行封装,就迁就着看,再以后的几篇关于CoreData的blog里,我会深入学习,并且最终会用block对他进行封装,争取用起来写更少的代码量。 CoreData让不...

    SwiftUI CoreData增删改查完整代码

    在这个主题中,我们将深入探讨如何使用SwiftUI实现对CoreData的增、删、改、查(CRUD)操作。SwiftUI提供了声明式UI编程模型,使得创建iOS应用的界面更加直观和高效,而CoreData作为苹果的数据持久化框架,为应用...

    ios-CoreData实现增删改查.zip

    它不仅简化了数据存储,还提供了对象关系映射(ORM)的功能,使得开发者可以更高效地进行增删改查操作,而无需直接操作SQL语句。本教程将深入探讨如何在iOS应用中使用Core Data来实现基本的CRUD(Create、Read、...

    coredata的增删改查

    本文将深入探讨Core Data的增删改查(CRUD)操作,并结合提供的源码项目“MyCoreData”进行讲解。该源码案例适用于Xcode 6.2及iOS 6.0以上的环境。 ### 1. Core Data基本概念 - ** Managed Object Model (MOM)**: ...

    ios-Coredata storyboard(增删改查).zip

    算是比较详细了,包括storyboard反向传值,喜欢学习的可以看看,后续还会更新有关coredata的使用,有不同意见可以留言,谢谢了!

    IOS之分析网易新闻缓存存储数据 CoreData的使用 增删改查

    如何使用CoreData实现增删改查,存储数据方便,修正了代码中SDWebImage的错误 作者文章地址:http://blog.csdn.net/rhljiayou/article/details/18037729

    ios-CoreData实现的增删改查.zip

    在“ios-CoreData实现的增删改查.zip”示例中,我们可以看到一个名为"CoreDataTest"的项目,这个项目展示了如何使用Core Data进行数据操作。 **添加(Add)**: 在Core Data中,添加数据的过程涉及到创建一个新的...

    ios-Coredata 的对象存储及增 删 改 查 条件过滤的详细解释.zip

    这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 demo 又有解释,实现快速上手.

    CoreDaata的增删改查

    在CoreData的增、删、改、查操作中,首先要理解其基本架构。CoreData主要包括以下组件: 1. **Model**:这是数据模型的定义,包含实体(Entities)、属性(Attributes)和关系(Relationships)。实体相当于数据库...

    对象存储,数据的增删改查--既有 demo 又有解释,实现快速上手..zip

    对象存储,数据的增删改查--这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 ...

    ios-Coredata 镇山改查.zip

    简单实现了对数据的增删改查,都有注释,另外我还写了一篇简书,特别详细,简单粗暴,是人都看懂~~~ 简书: http://www.jianshu.com/p/7c1ac5ce614b github: https://github.com/ty82885279/CoreData

Global site tag (gtag.js) - Google Analytics