啰里啰嗦学IOS CoreDate入门

创建项目

需要把Use Core Date勾上


把Main.storyboard删除.
点击如图文件.



点击下面的Add Entity


点击 + 添加属性和设置类型



选中Entity,修改为Person ,再点击editer->Create....->一直下一步.


新建了两个文件.


创建window

AppDelegate:: - ( BOOL )application:  didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 创建WINDOW
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // 设置为白色
    [self.window setBackgroundColor:[UIColor whiteColor]];
    
    
    // 设置主窗口(应该是这个意思)<img alt="疑问" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/doubt.gif" />
    [self.window makeKeyAndVisible];
    return YES;
}
运行一下,白白的.

设计视图

在ViewController.h中添加属性.
@interface ViewController : UIViewController
@property (nonatomic, retain) UIButton *buttonOfInsert;
@property (nonatomic, retain) UIButton *buttonOfGetAll;
@property (nonatomic, retain) UIButton *buttonOfDelete;
@property (nonatomic, retain) UIButton *buttonOfUpdate;
@property (nonatomic, retain) UIButton *buttonOfFind;

@property (nonatomic, retain) UITextField *textFieldOfPid;
@property (nonatomic, retain) UITextField *textFieldOfPname;
@property (nonatomic, retain) UITextField *textFieldOfAddress;

@property (nonatomic, retain) UILabel *labelOfPid;
@property (nonatomic, retain) UILabel *labelOfPname;
@property (nonatomic, retain) UILabel *labelOfAddress;
@end


在ViewController.m中新增消息.
#pragma mark 界面设计
/*添加按钮*/
- (void) setButtons{
    CGRect screen = [[UIScreen mainScreen] bounds]; // 获取全屏尺寸
    CGFloat width = screen.size.width / 6.0; // 每个按钮长
    CGFloat residue = screen.size.width - width * 5; // 剩余空间
    CGFloat dis = residue / 6; // 每个按钮的空隙
    CGFloat y = (screen.size.height * 4)/8.0; // y轴位置
    CGFloat height = screen.size.height / 10.0; // 高
    self.buttonOfInsert = [self buildButtonWithTitle:@"INSERT" andFrame:CGRectMake(dis, y, width, height)];
    self.buttonOfGetAll = [self buildButtonWithTitle:@"ALL" andFrame:CGRectMake(dis * 2 + width, y, width, height)];
    self.buttonOfFind = [self buildButtonWithTitle:@"FIND" andFrame:CGRectMake(dis * 3 + width * 2, y, width, height)];
    self.buttonOfDelete = [self buildButtonWithTitle:@"DELETE" andFrame:CGRectMake(dis * 4 + width * 3, y, width, height)];
    self.buttonOfUpdate = [self buildButtonWithTitle:@"UPDATE" andFrame:CGRectMake(dis * 5 + width * 4, y, width, height)];
}

/*添加输入框*/
- (void) setTextFields{
    CGRect screen = [[UIScreen mainScreen] bounds]; // 获取全屏尺寸
    CGFloat width = screen.size.width * 2 / 3.0 - 20; // 每个输入框长
    CGFloat dis = 10; // 每个输入框的空隙
    CGFloat y = (screen.size.height * 2)/8.0; // y轴位置
    CGFloat height = screen.size.height / 18.0; // 高
    self.textFieldOfPid = [self buildTextFieldWithFrame:CGRectMake(width / 2.0, y, width, height)];
    self.textFieldOfPname = [self buildTextFieldWithFrame:CGRectMake(width / 2.0, y + height + dis, width, height)];
    self.textFieldOfAddress = [self buildTextFieldWithFrame:CGRectMake(width / 2.0 , y + height * 2 + dis * 2, width, height)];
}

/*添加文本*/
- (void)setLabels{
    CGRect screen = [[UIScreen mainScreen] bounds]; // 获取全屏尺寸
    CGFloat width = screen.size.width * 1 / 3.0 - 40; // 每个文本长
    CGFloat dis = 10; // 每个文本的空隙
    CGFloat y = (screen.size.height * 2)/8.0; // y轴位置
    CGFloat height = screen.size.height / 18.0; // 高
    self.labelOfPid = [self buildLabelWithTitle:@"PID" andFrame:CGRectMake(20, y, width, height)];
    self.labelOfPname = [self buildLabelWithTitle:@"PNAME" andFrame:CGRectMake(20, y + height + dis, width, height)];
    self.labelOfAddress = [self buildLabelWithTitle:@"ADDRESS" andFrame:CGRectMake(20 , y + height * 2 + dis * 2, width, height)];
}


/*获取到一个文本*/
- (UILabel *)buildLabelWithTitle:(NSString *) title andFrame:(CGRect) frame{
    UILabel *labelOfTemp = [[UILabel alloc] initWithFrame:frame];
    [labelOfTemp setTintColor:[UIColor blackColor]];
    labelOfTemp.text = title;
    // 向右对齐
    [labelOfTemp setTextAlignment:NSTextAlignmentRight];
    [self.view addSubview:labelOfTemp];
    return labelOfTemp;
}

/*获取一个输入框*/
- (UITextField *) buildTextFieldWithFrame:(CGRect) frame{
    UITextField *textFieldOfTemp = [[UITextField alloc] initWithFrame:frame];
    [textFieldOfTemp setBorderStyle:UITextBorderStyleRoundedRect]; // 设置框的形式
    [self.view addSubview:textFieldOfTemp];
    return textFieldOfTemp;
}

/* 获取一个按钮 */
- (UIButton *) buildButtonWithTitle:(NSString *) title andFrame:(CGRect) frame{
    UIButton *buttonOfTemp = [UIButton buttonWithType:UIButtonTypeSystem];
    buttonOfTemp.frame =frame;
    [buttonOfTemp setTitle:title forState:UIControlStateNormal];
    [buttonOfTemp setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [buttonOfTemp.titleLabel setFont:[UIFont systemFontOfSize:14.0]]; // 设置字体大小
    [self.view addSubview:buttonOfTemp];
    return buttonOfTemp;
}

- ( void )viewDidLoad加上:
    [self setButtons];
    [self setTextFields];
    [self setLabels];
回到 AppDelegate.m
- ( BOOL )application:  didFinishLaunchingWithOptions:添加如下代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 创建WINDOW
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // 设置为白色
    [self.window setBackgroundColor:[UIColor whiteColor]];
    
    // 创建一个ViewController
    ViewController *vc = [[ViewController alloc] init];
    
    // 设置为window的根视图控制器
    [self.window setRootViewController:vc];
    
    // 设置主窗口(应该是这个意思)
    [self.window makeKeyAndVisible];
    return YES;
}
来运行 一下:




获取上下文 NSManagedObjectContext

导入包:
#import "AppDelegate.h"
在ViewController.m中添加消息:
#pragma mark Core Date
/*获取上下文,增删改查都需要用到这个,*/
- (NSManagedObjectContext *)managedObjectContext{
    AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
    if ([delegate performSelector:@selector(managedObjectContext)]) {
        return [delegate managedObjectContext];
    }else{
        return nil;
    }
}

添加按钮的动作

在ViewController.m中添加消息:

#pragma mark 创建按钮动作

- (void)actinOfButtons{
    [self.buttonOfInsert addTarget:self action:@selector(insert) forControlEvents:UIControlEventTouchUpInside];
    [self.buttonOfGetAll addTarget:self action:@selector(getall) forControlEvents:UIControlEventTouchUpInside];
    [self.buttonOfDelete addTarget:self action:@selector(delete) forControlEvents:UIControlEventTouchUpInside];
    [self.buttonOfFind addTarget:self action:@selector(find) forControlEvents:UIControlEventTouchUpInside];
    [self.buttonOfUpdate addTarget:self action:@selector(update) forControlEvents:UIControlEventTouchUpInside];
}

// 删除数据
- (void) delete{
    
}
// 查找数据
- (void) find{
    
}
// 更行数据
- (void) update{
    
}
// 保存数据
- (void) insert{
    
}

// 获取所有数据
- (void) getall{
    
}

- ( void )viewDidLoad加上:

[self actinOfButtons];

导入包
#import "Person.h"

Core Date

实现保存和获取所有数据:

//保存数据操作
- (void) insert{
    NSString *pid = self.textFieldOfPid.text;
    NSString *pname = self.textFieldOfPname.text;
    NSString *address = self.textFieldOfAddress.text;
    
    
    // 获取上下文对象
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    // 插入一个新对象
    NSManagedObjectContext *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:cxt];
    
    // 给person赋值
    [person setValue:pid forKey:@"pid"];
    [person setValue:pname forKey:@"pname"];
    [person setValue:address forKey:@"address"];
    
    // 创建一个错误对象,在错误时保存错误信息
    NSError *error = nil;
    if ([cxt save:&error]) {
        NSLog(@"add success");
    }else{
        NSLog(@"add fail");
        // 打印错误信息
        NSLog(@"Reason:%@",error);
    }
}


- (void) getall{
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    // 抓取数据,抓取Person表
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    // cxt 执行:
    NSArray *personArr = [cxt executeFetchRequest:request error:nil];
    
    if (personArr != nil && personArr.count > 0) {
        for (Person *obj in personArr) {
            NSLog(@"%@\t%@\t%@\t",obj.pid, obj.pname, obj.address);
        }
    }
    
}

运行一下

其他的依法炮制:

// 删除数据
- (void) delete{
    // 根据pid删除
    NSString *pid = self.textFieldOfPid.text;
    
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pid = %@",pid];
    
    [request setPredicate:predicate];
    
    NSArray *personArr = [cxt executeFetchRequest:request error:nil];
    
    if (personArr != nil && personArr.count > 0) {
        Person *person = [personArr lastObject];
        [cxt deleteObject:person];
        // 相当于提交
        [cxt save:nil];
        NSLog(@"del success");
    }
}
// 查找数据
- (void) find{
    // 根据pid查询
    NSString *pid = self.textFieldOfPid.text;
    
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    
    // 创建一个筛选
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pid = %@",pid];
    
    [request setPredicate:predicate];
    
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    NSArray *personArr = [cxt executeFetchRequest:request error:nil];
    
    if (personArr != nil && personArr.count > 0) {
        for (Person *obj in personArr) {
            NSLog(@"%@\t%@\t%@\t",obj.pid, obj.pname, obj.address);
        }
    }
    
}
// 更行数据
- (void) update{
    // 获取pid
    NSString *pid = self.textFieldOfPid.text;
    
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pid = %@", pid];
    
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    
    [request setPredicate:predicate];
    
    NSArray *personArr = [cxt executeFetchRequest:request error:nil];
    
    if (personArr != nil && personArr.count > 0) {
        Person *person = [personArr lastObject];
        person.pname = self.textFieldOfPname.text;
        person.address = self.textFieldOfAddress.text;
        // 提交
        [cxt save:nil];
        NSLog(@"updata success");
    }
}
补充,排序.

- (void)sort{
    // 根据pid排序,降序
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    
    // 查询规则
    NSSortDescriptor *pidDesc = [[NSSortDescriptor alloc] initWithKey:@"pid"
                                                            ascending:NO // 是否升序,NO
                                 ];
    
    [request setSortDescriptors:@[pidDesc]];
    
    NSManagedObjectContext *cxt = [self managedObjectContext];
    
    NSArray *personArr = [cxt executeFetchRequest:request error:nil];
    
    if (personArr != nil && personArr.count > 0) {
        for (Person *obj in personArr) {
            NSLog(@"%@\t%@\t%@",obj.pid, obj.pname, obj.address);
        }
    }
}





完全真实学习&&参考--->点击打开链接


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值