iOS中coreData的用法
//
// ViewController.m
// coredatademo002
//
// Created by ganchaobo on 13-6-29.
// Copyright (c) 2013年 ganchaobo. All rights reserved.
// #import "ViewController.h"
#import <CoreData/CoreData.h>
#import "Person.h"
@interface ViewController () @property(nonatomic,retain) NSManagedObjectContext *context;
@end @implementation ViewController #pragma mark -生命周期方法
- (void)viewDidLoad
{
[super viewDidLoad];
[self LoadData]; //[self UdataData];
// [self addData];
//[self deleteData];
// [self searchdata];
//面向对象操作
[self addPerson];
[self searchPerson];
// Do any additional setup after loading the view, typically from a nib.
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} -(void)viewDidUnload{
[super viewDidUnload];
self.context=nil;
}
- (void)dealloc
{
[_context release];
[super dealloc];
} #pragma mark-加载数据方式 -(void)LoadData{
//Nil表是从主bundles中加对应的模型实体
NSManagedObjectModel *model=[NSManagedObjectModel mergedModelFromBundles:nil];
for (NSEntityDescription *desc in model.entities) {
NSLog(@"%@",desc.name);
}
//通过模型 和数据库持久化
NSPersistentStoreCoordinator *storeCoordinator=[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
//持久化到coredata中
NSString *document= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
document=[document stringByAppendingPathComponent:@"coredata.db"];
NSURL *url=[NSURL fileURLWithPath:document];
NSError *error=nil;
[storeCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error];
if(error){
NSLog(@"打开数据库失败");
return;
} self.context=[[[NSManagedObjectContext alloc] init] autorelease];
self.context.persistentStoreCoordinator=storeCoordinator; } -(void)addData{ //把实体对象和实体上下文相关联
for (int i=; i<; i++) { NSManagedObject *obj=[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context];
NSString *name=[NSString stringWithFormat:@"gcb%i",i];
int age=i;
[obj setValue: name forKey:@"name"];
[obj setValue:@(age) forKey:@"age"]; //保存上下文中相关联的对象即可
}
[self.context save:nil]; } -(void)searchdata{
NSFetchRequest *fetch=[NSFetchRequest fetchRequestWithEntityName:@"Person"]; //排序
NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
fetch.sortDescriptors=@[sort];
//加入查询条件 age>20
// fetch.predicate=[NSPredicate predicateWithFormat:@"age>%i",20];
//加入like *c1"
//fetch.predicate=[NSPredicate predicateWithFormat:@"name like %@",@"*cb1*"];
NSArray *arr=[self.context executeFetchRequest:fetch error:nil];
for (NSManagedObject *mode in arr) {
NSString *name=[mode valueForKey:@"name"];
int age =[[mode valueForKey:@"age"] intValue];
NSLog(@"%zi--%@",age,name);
}
}
//先查询出要修改的数据
-(void)UdataData{
//要操作那一张表
NSFetchRequest *Fetch=[NSFetchRequest fetchRequestWithEntityName:@"Person"];
//先创建排序描述,在排序
NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
Fetch.sortDescriptors=@[sort];
//加入查询条件
Fetch.predicate=[NSPredicate predicateWithFormat:@"age>%i",];
//把条件加入到上下文进行操作,得到查询集合
NSArray * arr=[self.context executeFetchRequest:Fetch error:nil];
for (NSManagedObject *obj in arr) {
//更改实体的数据
[obj setValue:@() forKey:@"age"];
}
//同步更数据库相关联的数据
[self.context save:nil]; } //删除数据, 从数据库中取出来的对象,叫做NSManaedObject对象
-(void)deleteData{
//要找出上下文中操作的一张表
NSFetchRequest *FectchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Person"];
FectchRequest.predicate=[NSPredicate predicateWithFormat:@"age<%i",];
NSArray *arr=[self.context executeFetchRequest:FectchRequest error:nil];
for (NSManagedObject *obj in arr) {
[self.context deleteObject:obj];
}
//同步数据库
[self.context save:nil];
} #pragma mark-面向对象开发
-(void)addPerson{
//把要插入的实体和当前上下文相关联
Person *ps=[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context];
ps.name=@"mj__itcast";
ps.age=@;
//同步数据和上下文相关联的
[self.context save:nil];
}
-(void)searchPerson{
NSFetchRequest *FetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSArray *arr=[self.context executeFetchRequest:FetchRequest error:nil];
for (Person *ps in arr) {
NSLog(@"name=%@,age=%@",ps.name,ps.age);
}
}
@end
iOS中coreData的用法的更多相关文章
- iOS中block的用法 以及和函数用法的区别
ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候 MyBlock(); 带参数的 ...
- IOS中CoreData浅析
CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...
- iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)
1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...
- ios中图片拉伸用法
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCap ...
- iOS中的CocoaPods用法及常用命令
CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...
- iOS 中CoreData的简单使用
原文链接:http://www.jianshu.com/p/4411f507dd9f 介绍:本文介绍的CoreData不在AppDelegate中创建,在程序中新建工程使用,即创建本地数据库,缓存数据 ...
- ios中Pldatabase的用法
将PLDATABASE加入到工程 下载PLDatabase 的dmg文件 将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操 ...
- iOS中NSScanner 的用法
NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以创建NSScanner时制定他的String属性,然后scanner会按照你的要求从头到尾扫描这 ...
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefa ...
随机推荐
- 混合开发 Hybird Ionic Angular Cordova web 跨平台 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Jquery怎么获取select选中项 自定义属性的值
Jquery如何获取select选中项 自定义属性的值?HTML code <select id="ddl" onchange="ddl_change(this)& ...
- 不用IDE写C#的Hello World
用Visual Studio等IDE写C#的Hello World非常简单,但脱离了IDE你能不能打印出Hello World呢?这不是说工作时脱离IDE,而是学习一下CLR的执行模型. Hello ...
- 【Eclipse】Eclipse性能调优
Eclipse性能调优 eclipse 吃内存_百度搜索 eclipse 性能调优之内存分配 - Defonds 的专栏 - CSDN博客 优化JVM参数提高eclipse运行速度 - Java综合 ...
- kaggle-Corporación Favorita Grocery Sales Forecasting
https://blog.csdn.net/bitcs_zt/article/details/79256688 该项比赛1月15日就已经结赛了,但由于之后进入期末,备考花费了大量的时间,没来得及整理相 ...
- 分词中的HMM
http://blog.csdn.net/heavendai/article/details/7030102 1. 首先来说一下马尔科夫链. 一个事件序列发生的概率可以用下面的概率论里 ...
- wifidog接口文档(转)
目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...
- Twitter Lite以及大规模的高性能React渐进式网络应用
Twitter Lite以及大规模的高性能React渐进式网络应用 原文:Twitter Lite and High Performance React Progressive Web Apps at ...
- 2017年11月8日最新仿互站导航t5友价商城-9套模板首页都增加微信登陆
今天测试效果如下,直接看图吧,入口在下方,点击图片直达 把9套餐模板都添加了微信首页登陆,仿互站的导航,操作比互站还要方便,官方一直对https 支持不太友好,索性把所有的https bug都修复了, ...
- JavaScript筛选出数组种连续的数字
function arrange(source) { var t; var ta; var r = []; for(var j=0;j<source.length;j++){ var v=sou ...