ios coreData sqlite3

本文介绍如何在iOS应用中利用CoreData技术进行数据持久化操作,包括数据模型定义、数据插入、数据查询及错误处理。通过实例演示,帮助开发者掌握CoreData的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//
//  ViewController.m
//  CoreDataByStoryboard
//
//  Created by 何瑾 on 15/1/15.
//  Copyright (c) 2015年 e世雕龙. All rights reserved.
//

#import "ViewController.h"
#import "Student.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITextField *txtName;// 姓名文本框
@property (weak, nonatomic) IBOutlet UITextField *txtAge;// 年龄文本框
@property (weak, nonatomic) IBOutlet UITextField *txtID;// ID文本框
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;// 托管对象上下文(类似于sqlite3编程中数据库的缓冲区)
@property (strong, nonatomic) NSArray *students;// 查询出来的学生数组
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self getDocPath];
    // Do any additional setup after loading the view, typically from a nib.
    // 1、获取应用程序对象
    UIApplication *app = [UIApplication sharedApplication];
    // 2、获取应用程序的委托
    id appDelegate = app.delegate;
    // 3、获取应用程序中的托管对象上下文
    self.managedObjectContext = [appDelegate managedObjectContext];
}
#pragma mark 注册
- (IBAction)btnRegister:(id)sender {
    // 通过实体描述类创建数据模型(托管对象)放入托管对象上下文中
    Student *stu = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.managedObjectContext];
    // 给数据模型(托管对象)属性绑定界面数据
    static int i = 0;
    i++;
    stu.id = [NSNumber numberWithInt:i];
    stu.name = self.txtName.text;
    stu.age = [NSNumber numberWithInt:[self.txtAge.text intValue]];
    stu.address = @"北京人";
    // 通过托管对象上下文保存数据模型(托管对象)
    __autoreleasing NSError *error = nil;
    [self.managedObjectContext save:&error];
    // 判断是否保存成功
    if (error) {
        [self myAlert:@"托管对象保存失败!"];
    } else {
        [self myAlert:@"托管对象保存成功!"];
    }
}
#pragma mark 查询
- (IBAction)btnSearch:(id)sender {
    // 1、创建抓取请求对象
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
    // 从界面获取查询条件
    NSNumber *id = [NSNumber numberWithInt:[self.txtID.text intValue]];
    NSLog(@"id:%@",id);
    // 2、创建谓词(查询条件)
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id=%@",id];
    // 2.1把谓词放入抓取请求对象中
    [request setPredicate:predicate];
    // 3、创建排序规则
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"id" ascending:YES];
    // 3.1把排序规则放入抓取请求对象中
    [request setSortDescriptors:@[sortDescriptor]];
    // 4、执行抓取(查询)
    __autoreleasing NSError *error = nil;
    self.students = [self.managedObjectContext executeFetchRequest:request error:&error];
    if (error) {
        [self myAlert:@"查询失败!"];
    } else {
        [self myAlert:@"查询成功!请看控制台!"];
        NSLog(@"students:%@",self.students);
    }
}
#pragma mark 封装UIAlertView
- (void)myAlert:(NSString *)errorMsg {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"信息" message:errorMsg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];
    [alert show];
}
#pragma mark 获取应用沙盒的documents目录路径
- (NSString *)getDocPath {
    NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath = docPaths[0];
    NSLog(@"docPath:%@",docPath);
    return docPath;
}
@end








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值