coredata

作者: 小美788 | 来源:发表于2018-12-17 08:24 被阅读0次

    #import "DataManager.h"

    #import "AppDelegate.h"

    @interfaceDataManager(){

        //声明一个AppDelegate对象属性,调用里面的被管理的对象上下文 保存方法

        AppDelegate * myDelegate;

    }

    @end

    @implementation DataManager

    //单例创建

    +(DataManager *)shareManager{

        staticDataManager * manager;

        if(!manager) {

            manager = [[DataManager alloc]init];

        }

        returnmanager;

    }

    //插入

    -(void)insert:(NSDictionary *)dic{

       //CoreData数据的插入

        //新方法 **

        myDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        //创建实体描述对象

       NSEntityDescription * descrption = [NSEntityDescription entityForName:@"Student"inManagedObjectContext:myDelegate.persistentContainer.viewContext];

        //创建一个模型对

        Student * student = [[Student alloc] initWithEntity:descrption insertIntoManagedObjectContext:myDelegate.persistentContainer.viewContext];

        student.name = dic[@"name"];

        student.age = [dic[@"age"]integerValue];

        student.sex = [dic[@"sex"]integerValue];

        //对数据管理器的更改进行永久保存

        [myDelegate saveContext];

    }

    //更改

    -(void)updata:(Student *)student{

        myDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        [myDelegate saveContext];

    }

    //查找

    -(NSArray *)select{

         myDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        //查询数据

        //1.创建查询请求

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

        //获取地址

        NSError * error =nil;

        //2.执行这个查询请求

       NSArray * result =  [myDelegate.persistentContainer.viewContext executeFetchRequest:request error:&error];

        returnresult;

    }

    //删除

    -(void)deleteData:(Student *)student{

         myDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

        [myDelegate.persistentContainer.viewContext deleteObject:student];

        [myDelegate saveContext];

    }

    @end

    #import "ViewController.h"

    #import "TwoVc.h"

    #import "Student+CoreDataClass.h"

    #import "DataManager.h"

    @interface ViewController ()<UITableViewDelegate,UITableViewDataSource>

    @property(nonatomic,strong)UITableView * tableView;

    @property(nonatomic,strong)NSMutableArray * dataSource;

    @end

    @implementation ViewController

    -(void)viewWillAppear:(BOOL)animated{

        [superviewWillAppear:animated];

        // 查询数据

        self.dataSource = [NSMutableArray arrayWithArray:[[DataManager shareManager]select]];

        [self.tableView reloadData];

    }

    - (void)viewDidLoad {

        [super viewDidLoad];

        [selfsetNav];

    }

    -(UITableView*)tableView{

        if (!_tableView) {

            _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];

            _tableView.delegate=self;

            _tableView.dataSource=self;

            [self.viewaddSubview:_tableView];

        }

        return _tableView;

    }

    -(void)setNav{

        self.title = @"CoreData单表";

        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"➕" style:UIBarButtonItemStylePlain target:self action:@selector(els)];

    }

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

        return _dataSource.count;

    }

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

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

        if(cell ==nil) {

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

        }

        Student *s = _dataSource[indexPath.row];

        cell.textLabel.text = [NSString stringWithFormat:@"sex = %d,name %@,age = %d",s.sex,s.name,s.age];

        returncell;

    }

    -(void)els{

        TwoVc* t = [TwoVcnew];

        [self.navigationController pushViewController:t animated:nil];

    }

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

        //点击单元格跳转界面

        TwoVc* two = [TwoVcnew];

        two.student=_dataSource[indexPath.row];

        [self.navigationController pushViewController:two animated:nil];

    }

    - (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath{

        [[DataManagershareManager]deleteData:_dataSource[indexPath.row]];

        //

        [_dataSource removeObject:_dataSource[indexPath.row]];

        [self.tableView reloadData];

    }

    @end

    #import

    #import "Student+CoreDataClass.h"

    @interface TwoVc : UIViewController

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

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

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

    @property(nonatomic , assign)NSInteger typeID;

    @property(nonatomic , strong)Student * student;

    @end

    #import "TwoVc.h"

    #import "DataManager.h"

    @interface TwoVc ()

    @end

    @implementation TwoVc

    - (void)viewDidLoad {

        [super viewDidLoad];

        //右按钮

        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savetion)];

        if(self.typeID==1) {

            //添加数据

            self.title=@"添加数据";

        }else{

            self.title=@"修改数据";

            self.sex.text = [NSString stringWithFormat:@"%d",_student.sex];

            self.name.text = _student.name;

            self.age.text = [NSString stringWithFormat:@"%d",_student.age];

        }

    }

    -(void)savetion{

        if(self.typeID==1) {

            //添加

            self.title=@"添加数据";

            [[DataManagershareManager]insert:@{@"stuID ":@([_sex.textintegerValue]),@"name":_name.text,@"age":@([_age.textintegerValue])}];

        }else{

            //修改

            self.title=@"修改数据";

            self.student.sex = [_sex.text integerValue];

            self.student.name = _name.text;

            self.student.age = [_age.text integerValue];

            [[DataManager shareManager] updata:_student];

        }

        [self

         .navigationController popViewControllerAnimated:YES];

    }

    @end

    + (NSFetchRequest *)fetchRequest;

    @property (nullable, nonatomic, copy) NSString *name;

    @property (nonatomic) int16_t age;

    @property (nonatomic) int16_t sex;

    相关文章

      网友评论

          本文标题:coredata

          本文链接:https://www.haomeiwen.com/subject/ixtqkqtx.html