#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
相关推荐
在这个"CoreData增删改查"的主题中,我们将深入探讨如何使用CoreData进行基本的数据操作,包括添加(增)、删除(删)、修改(改)和查询(查)。 1. **增(Add)**: 当我们需要在应用中存储新数据时,首先创建一...
在这个“CoreData增删改查的简单使用”主题中,我们将深入探讨如何利用CoreData进行基本的数据操作,包括添加(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **创建(Create)**: 在...
简单实现了对数据的增删改查,都有注释,另外我还写了一篇简书,特别详细,简单粗暴,是人都看懂~~~ 简书: http://www.jianshu.com/p/7c1ac5ce614b github: https://github.com/ty82885279/CoreData
在这个"coreData增删改查Demo"中,我们将探讨如何使用CoreData进行基本的数据操作,包括创建、读取、更新和删除(CRUD)。 1. 创建(Create) 在CoreData中,创建新记录通常涉及创建一个新的Managed Object Context...
本教程通过一个简单的"增删改查"(CRUD)DEMO,深入讲解如何利用CoreData在iOS应用中进行数据操作。 一、CoreData基本概念 1. Managed Object Context(MOC):是CoreData的主要工作区,负责处理数据对象的创建、...
本篇文章将深入探讨如何在iOS应用中使用CoreData进行数据的增删改查操作,并结合实例——分析网易新闻的存储数据来阐述其工作原理。 首先,让我们了解CoreData的基本概念。CoreData不是一个数据库,而是一个对象图...
CoreData的简单用法,增删改查。由于是一个Demo所以也没怎么进行封装,就迁就着看,再以后的几篇关于CoreData的blog里,我会深入学习,并且最终会用block对他进行封装,争取用起来写更少的代码量。 CoreData让不...
在这个主题中,我们将深入探讨如何使用SwiftUI实现对CoreData的增、删、改、查(CRUD)操作。SwiftUI提供了声明式UI编程模型,使得创建iOS应用的界面更加直观和高效,而CoreData作为苹果的数据持久化框架,为应用...
它不仅简化了数据存储,还提供了对象关系映射(ORM)的功能,使得开发者可以更高效地进行增删改查操作,而无需直接操作SQL语句。本教程将深入探讨如何在iOS应用中使用Core Data来实现基本的CRUD(Create、Read、...
本文将深入探讨Core Data的增删改查(CRUD)操作,并结合提供的源码项目“MyCoreData”进行讲解。该源码案例适用于Xcode 6.2及iOS 6.0以上的环境。 ### 1. Core Data基本概念 - ** Managed Object Model (MOM)**: ...
算是比较详细了,包括storyboard反向传值,喜欢学习的可以看看,后续还会更新有关coredata的使用,有不同意见可以留言,谢谢了!
如何使用CoreData实现增删改查,存储数据方便,修正了代码中SDWebImage的错误 作者文章地址:http://blog.csdn.net/rhljiayou/article/details/18037729
在“ios-CoreData实现的增删改查.zip”示例中,我们可以看到一个名为"CoreDataTest"的项目,这个项目展示了如何使用Core Data进行数据操作。 **添加(Add)**: 在Core Data中,添加数据的过程涉及到创建一个新的...
这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 demo 又有解释,实现快速上手.
在CoreData的增、删、改、查操作中,首先要理解其基本架构。CoreData主要包括以下组件: 1. **Model**:这是数据模型的定义,包含实体(Entities)、属性(Attributes)和关系(Relationships)。实体相当于数据库...
对象存储,数据的增删改查--这里主要是讲如何使用系统自带的 CoreData 类对数据持久化到本地的操作,对于初学者十分适合使用,作为作者的我,将所有必要的注释全部写的清楚明了,使得 ios 开发人员在参考此文档时既有 ...
简单实现了对数据的增删改查,都有注释,另外我还写了一篇简书,特别详细,简单粗暴,是人都看懂~~~ 简书: http://www.jianshu.com/p/7c1ac5ce614b github: https://github.com/ty82885279/CoreData