CoreData复习

  • 以前简单学习过coredata,但是在公司这么时间不用了,又感觉快忘记了,今天就拿点时间出来复习下coredata
  • 本文只是简单的复习下coredata,涉及到的内容也只是数据库的增删改查这些基本操作
用coredata必须知道的几个概念
/*
 1 、NSManagedObjectContext 管理对象,上下文,持久性存储模型对象
 2、NSManagedObjectModel 被管理的数据模型,数据结构
 3、NSPersistentStoreCoordinator 连接数据库的
 4、NSManagedObject 被管理的数据记录
 5、NSFetchRequest 数据请求
 6、NSEntityDescription 表格实体结构
 */
//
//  ViewController.m
//  CoreData1
//
//  Created by liyang on 16/5/18.
//  Copyright © 2016年 liyang. All rights reserved.
//

#import "ViewController.h"
#import "AppDelegate.h"
#import <CoreData/CoreData.h>
#import "Person.h"

@interface ViewController ()

/** appdelegate */
@property (nonatomic, strong) AppDelegate *myAppDelegate;
/** 创建一个上下文的管理对象 */
@property (nonatomic, strong) NSManagedObjectContext *myContext;
/** 数据源数组 */
@property (nonatomic, strong) NSMutableArray *allDataArray;

@end

@implementation ViewController

/*
 1 、NSManagedObjectContext 管理对象,上下文,持久性存储模型对象
 2、NSManagedObjectModel 被管理的数据模型,数据结构
 3、NSPersistentStoreCoordinator 连接数据库的
 4、NSManagedObject 被管理的数据记录
 5、NSFetchRequest 数据请求
 6、NSEntityDescription 表格实体结构
 */

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 初始化
    self.myAppDelegate = [UIApplication sharedApplication].delegate;
    self.myContext = self.myAppDelegate.managedObjectContext;
    self.allDataArray = [NSMutableArray array];
    
    // 删除所有的数据
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    NSArray *arr = [self.myContext executeFetchRequest:request error:nil];
    for (Person *per in arr) {
        [self.myContext deleteObject:per];
    }
    [self.myAppDelegate saveContext];
}

#pragma mark - 增
- (IBAction)btn1:(id)sender {
    
    // 创建一个实体描述对象
    NSEntityDescription *personDes = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.myContext];
    
    // 创建多个数据
    for (int i = 0; i < 10; i++) {
        // 创建一个Person对象
        Person *person = [[Person alloc] initWithEntity:personDes insertIntoManagedObjectContext:self.myContext];
        person.name = [NSString stringWithFormat:@"liyang--%d", i];
        person.age = [NSNumber numberWithInt:i];
        [self.myContext insertObject:person];
        
        // 加到数组中
        [self.allDataArray addObject:person];
    }
    
    [self.myAppDelegate saveContext];
}
#pragma mark - 查
- (IBAction)btn2:(id)sender {
    
    // 查询表中数据
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
    // 排序
    NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
    [request setSortDescriptors:@[sort]];
    
    // 按条件查询
//    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age = %@", @23];
//    [request setPredicate:predicate];
    
    NSError *error;
    // 查询,注意返回的结果是数组
    NSArray *arr = [self.myContext executeFetchRequest:request error:&error];
    if (!error) {
        for (Person *per in arr) {
            NSLog(@" %@, %@", per.age, per.name);
        }
    }
}
#pragma mark - 改
- (IBAction)btn3:(id)sender {
    Person *per = [self.allDataArray objectAtIndex:0];
    if (per) {
        per.name = @"superMan";
        per.age = @1;
        [self.myAppDelegate saveContext];
    }
}

#pragma mark - 删
- (IBAction)btn4:(id)sender {
    Person *per = [self.allDataArray lastObject];
    if (per) {
        [self.myContext deleteObject:per];
        [self.allDataArray removeObject:per];
        [self.myAppDelegate saveContext];
    }
}

@end
  • 在创建工程的时候记得勾选coredata,不然自己从新建还是挺麻烦的

  • 经常忘记在表中建的实体怎么导出,这其实就是com+N,选择coredata,建个子类,然后全部勾选,下一步,全部勾选,下一步的事情

    创建子类.png

  • 如上图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.CoreData 是基于Sqlite的封装,数据保存的一个数据文件中. 2.Xcode8 创建NSManage...
    司马捷阅读 1,378评论 0 2
  • CoreData 从入门到精通 (一) 数据模型 + CoreData 栈的创建 概述 CoreData 是 Co...
    chaoyang805阅读 9,313评论 8 46
  • 其实人生本来就是没有意义的,为了使自己活得感觉良好,才将“意义”拿出来,从这点来看,“意义”是人获得幸福感觉的一个...
    草石阅读 3,169评论 0 2
  • 一、dSYM是什么? 是一个16进制的函数地址映射信息文件,这个文件中包含了项目中对应的函数名和文件名,每次项目编...
    LeonR阅读 4,125评论 2 0
  • 1.隔着氤氲的晨雾,斑驳的碎瓦之间染了新绿,那株夏瑾也在这雾霭间蒙上水汽,在惊蛰过后醒来,伴着细风和黎明。烟雨蒙蒙...
    Absinthis阅读 2,523评论 0 0

友情链接更多精彩内容