CoreData的一些简单运用
1.首先创建一个新的工程

记得勾选下面的 Use Core Data
万恶分割线————————————————————————

然后点击Add Entity 创建一个类似于表名。
万恶分割线————————————————————————

然后创建属性名 , 选择属性的类型
万恶分割线————————————————————————

然后你写好属性之后,就可以让系统帮你生成类了,点击倒数第三个(Create NSManagedObject Subclass...)
万恶分割线————————————————————————

记得,你要用就要勾选它,然后点击下一步。
万恶分割线————————————————————————

然后系统就帮你生成了类。
然后这个时候你可以进到AppDElegate.h
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window;
//被管理对象上下文(数据管理器)相当于一个临时数据库
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
//被管理对象模型(数据模型器)
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
//持久化存储助理(数据连接器)整个CoreData框架中的核心
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
//把骂我呢临时数据库中进行的改变进行永久保存
- (void)saveContext;
//获取真实文件的存储路径,NURL类型
- (NSURL *)applicationDocumentsDirectory;
在你ViewController.m文件里面就可以实现数据库的增删改, 注意!!!!! 我的tableview,是拖拽控件的,但是里面的方法几乎都可以借鉴。
#import "AppDelegate.h"
#import "Clothes.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *TableVire;
@property(strong,nonatomic)NSMutableArray *dataSource; //声明一个AppDelegate对象属性,用来调用类中的属性,比如被管理对象上下文
@property(strong,nonatomic)AppDelegate *myAppDelegate; @end @implementation ViewController
/**
* 插入数据
*
* @param sender +barButtonItem
*/
- (IBAction)addModel:(id)sender
{
//插入数据
//创建实体描述对象
NSEntityDescription *description=[NSEntityDescription entityForName:@"Clothes" inManagedObjectContext:self.myAppDelegate.managedObjectContext]; //1.创建一个模型对象
Clothes *cloth=[[Clothes alloc] initWithEntity:description insertIntoManagedObjectContext:self.myAppDelegate.managedObjectContext];
cloth.name=@"Puma";
int price=arc4random()%1000+1;
cloth.price=[NSNumber numberWithInt:price];
//插入数据源数组
[self.dataSource addObject:cloth];
//插入UI
[self.TableVire insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.dataSource.count-1 inSection: 0]] withRowAnimation:UITableViewRowAnimationLeft];
//对数据管理器中的更改进行永久存储
[self.myAppDelegate saveContext];
} - (void)viewDidLoad {
[super viewDidLoad];
//初始化数组
self.dataSource=[NSMutableArray array];
self.myAppDelegate=[UIApplication sharedApplication].delegate;
//查询数据
//1.NSFetchRequest对象
NSFetchRequest *request=[[NSFetchRequest alloc] initWithEntityName:@"Clothes"];
//2.设置排序
//2.1设置排序描述对象
NSSortDescriptor *sortDescriptor=[[NSSortDescriptor alloc] initWithKey:@"price" ascending:YES];
request.sortDescriptors=@[sortDescriptor];
//执行这个查询请求
NSError *error=nil;
NSArray *resut= [self.myAppDelegate.managedObjectContext executeFetchRequest:request error:&error];
//给数据源组中添加数据
[self.dataSource addObjectsFromArray:resut]; }
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.dataSource.count;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
Clothes *cloth=self.dataSource[indexPath.row];
cell.textLabel.text=[NSString stringWithFormat:@"%@---%@",cloth.name,cloth.price]; return cell;
}
//允许tableview编辑
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
//tableView编辑的方法
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle==UITableViewCellEditingStyleDelete) {
// 删除数据源
Clothes *cloth=self.dataSource[indexPath.row];
[self.dataSource removeObject:cloth];
//删除数据管理器中的数据
[self.myAppDelegate.managedObjectContext deleteObject:cloth];
//将进行的更改进行永久保存
[self.myAppDelegate saveContext];
//删除单元格
[self.TableVire deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; }
}
//点击cell进行修改数据
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.找到模型对象
Clothes *cloth=self.dataSource[indexPath.row];
cloth.name=@"Nike";
// 舒心单元格
[self.TableVire reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
//通过saveContext对数据惊醒永久保存
[self.myAppDelegate saveContext]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end
这样你就对tableview进行增删改,查看, 并且数据会永久存储在你的本地数据库 , 当然这个是很基本,很简单的。
CoreData的一些简单运用的更多相关文章
- Coredata 单表简单使用
** 使用Coredata 工程中的DataModel创建:系统创建.手动创建** ** 使用Coredata需要要导入<CoreData/CoreData.h> ** 1.系统创建(系统 ...
- CoreData数据库浅析
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数 ...
- 数据处理之CoreData
一.CoreData数据库框架与Sqlite对比 Sqlite: 1.基于C接口, 需要使用sql语句, 代码繁琐 2.在处理大量数据时, 表关系更直观 3.在OC中不是可视化的 CoreData: ...
- CoreData数据库
一 CoreData 了解 1 CoreData 数据持久化框架是 Cocoa API 的一部分,首先在iOSS5 版本的系统中出现: 它允许按照 实体-属性-值 模式组织数据: ...
- iOS学习37数据处理之CoreData
1. CoreData数据库框架的优势 1> CoreData历史 CoreData数据持久化框架是Cocoa API 的一部分,首次在iOS5版本的系统中出现,它允许按照实体-属性-值模型组织 ...
- iOS进阶学习-CoreData
一.CoreData数据库框架的优势 1.CoreData数据持久化框架是Cocoa API的一部分,首次在iOS5版本的系统中出现,它允许按照实体-属性-值模型组织数据,并以XML.二进制文件或者S ...
- 对FMDB的封装JRDB
在自己开发中,每次用到数据库都会纠结是使用CoreData还是FMDB.CoreData虽然Api简单,但是调用栈非常复杂,要初始化一个Context需要至少20行代码.显然,对于这种这么恶心的情况, ...
- ios实例开发精品文章推荐(8.13)
提示用户对产品进行评价 http://www.apkbus.com/android-137752-1-1.html设置UILabel和UITextField的Insets http://www.apk ...
- 【CoreData】 简单地使用
先介绍一下什么是CoreData —— 它是在iOS5之后出现的一个框架,提供了对象-关系映射(ORM)的功能,既能够将OC对象转化成数据,保存在SQLite数据库文件中,也能将保存在数据库中的数据还 ...
随机推荐
- ASP.NET MVC之文件上传【一】(八)
前言 这一节我们来讲讲在MVC中如何进行文件的上传,我们逐步深入,一起来看看. Upload File(一) 我们在默认创建的项目中的Home控制器下添加如下: public ActionResult ...
- 近期博客内容的规划(关于Swift语言)
因为最近事情比较多,有一段时间没有发表博客了.前一段时间,利用空余时间翻译了一本关于Swif的书籍,过一段时间就会出版吧.通过翻译此书,英语水平没提高多少,不过Swift算是系统的学习了一下. 在翻译 ...
- PHP关于web页面交互内容
学php学了有一段时间了总结总结给大家分享一下 PHP中的引用 第一段程序: <?php $first_name="firstName"; $first=&$firs ...
- PHP变量和数据类型
编程语言可以分为三大类 1. 静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的. 2. 动态语言类型,比如:PHP,python等各种脚本语 ...
- C/C++:提升_指针的指针和指针的引用
C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.
- struts2学习笔记--线程安全问题小结
在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样 ...
- git开发流程、常用命令及工具、TortoiseGit使用及常见问题
根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 - 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上br ...
- 微信小程序小技巧系列《二》show内容展示,上传文件编码问题
作者:gou-tian 来自:github show内容展示 尝试用微信小程序的template组件实现.同时,尝试页面间转跳时传参,在目标页面引入模板文件实现 写的更少,做的更多 篇幅有限详细代码此 ...
- MySQL的多存储引擎架构
支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...
- CSS实现单行与多行文字省略(truncation)
在上一篇文章小div布局之卡片堆叠(card-stacking)中有多行文字溢出省略的效果,这篇文章就对这种效果(包括单行文字溢出省略)的实现做个简单的记录,以防自己忘记.具体来说,就是要实现这种文字 ...