http://blog.csdn.net/q199109106q/article/details/8563438

//
// MJViewController.m
// 数据存储5-Core Data
//
// Created by mj on 13-4-16.
// Copyright (c) 2013年 itcast. All rights reserved.
// #import "MJViewController.h"
#import <CoreData/CoreData.h>
#import "NSString+File.h"
#import "Person.h" @interface MJViewController ()
@property (nonatomic, retain) NSManagedObjectContext *context;
@end @implementation MJViewController - (void)viewDidLoad
{
[super viewDidLoad]; // 初始化上下文对象
[self initContext]; // 插入数据
//[self addData];
//[self addPerson]; // 删除数据
//[self deleteData]; // 查询数据
[self findPerson]; // 更改数据
//[self updateData];
} - (void)dealloc {
[_context release];
[super dealloc];
} #pragma mark 查询数据
- (void)findPerson {
// 初始化查询对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; NSArray *array = [self.context executeFetchRequest:request error:nil]; for (Person *person in array) {
NSLog(@"name=%@,age=%@", person.name, person.age);
}
} #pragma mark 插入数据
- (void)addPerson {
// 初始化一个跟上下文关联的对象
Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context]; person.name = @"mj";
person.age = [NSNumber numberWithInt:]; [self.context save:nil];
} #pragma mark 删除数据
- (void)deleteData {
// 初始化查询对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; // 设置条件过滤 where age < 50
request.predicate = [NSPredicate predicateWithFormat:@"age < %i", ]; NSArray *array = [self.context executeFetchRequest:request error:nil]; for (NSManagedObject *person in array) {
// 删除掉的person对象就不会跟context关联了
[self.context deleteObject:person];
} // 将所有跟上下文相关联的对象同步到数据库
[self.context save:nil];
} #pragma mark 查询数据
- (void)updateData {
// 初始化查询对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; // 设置条件过滤 where age > 20
request.predicate = [NSPredicate predicateWithFormat:@"age > %i", ]; NSArray *array = [self.context executeFetchRequest:request error:nil]; for (NSManagedObject *person in array) {
[person setValue:[NSNumber numberWithInt:] forKey:@"age"];
} // 将所有跟上下文相关联的对象同步到数据库
[self.context save:nil];
} #pragma mark 查询数据
- (void)findData { // 初始化查询对象
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; // 按照age降序
NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO]; request.sortDescriptors = [NSArray arrayWithObject:desc]; // 设置条件过滤 where age > 20
//request.predicate = [NSPredicate predicateWithFormat:@"age > %i", 20]; // name like '%j-1%'
//request.predicate = [NSPredicate predicateWithFormat:@"name like %@", @"*j-1*"]; NSArray *array = [self.context executeFetchRequest:request error:nil]; for (NSManagedObject *person in array) {
NSString *name = [person valueForKey:@"name"]; int age = [[person valueForKey:@"age"] intValue]; NSLog(@"name=%@,age=%i", name, age);
} } #pragma mark 插入数据
- (void)addData {
//[[NSManagedObject alloc] initWithEntity:<#(NSEntityDescription *)#> insertIntoManagedObjectContext:<#(NSManagedObjectContext *)#>]; for (int i = ; i<; i++) {
// 初始化一个跟上下文关联的对象
NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context]; // 设置对象的属性
[person setValue:[NSNumber numberWithInt:+i] forKey:@"age"];
NSString *name = [NSString stringWithFormat:@"mj-%i", i];
[person setValue:name forKey:@"name"];
} // 将所有跟上下文相关联的对象同步到数据库
[self.context save:nil];
} #pragma mark 初始化上下文对象
- (void)initContext {
// 1.加载模型文件
// nil代表从应用程序主bundle里面加载模型文件
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil] ; // 2.初始化持久化存储调度器
NSPersistentStoreCoordinator *store = [[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model] autorelease]; // 添加持久化存储库(这里用数据库存储)
NSString *path = [@"coredata.db" documentsAppend]; NSURL *url = [NSURL fileURLWithPath:path]; // 一定要给指针赋值
NSError *error = nil;
[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]; if (error) {
NSLog(@"打开数据库失败:%@", [error localizedDescription]);
return;
} // 3.初始化上下文对象
self.context = [[[NSManagedObjectContext alloc] init] autorelease];
self.context.persistentStoreCoordinator = store;
} @end

下面是面向模型

#import "ViewController.h"
#import <CoreData/CoreData.h>
#import "Person.h"
#import "Car.h"
@interface ViewController () @property(nonatomic,retain)NSManagedObjectContext *context;
@end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. //从应用程序加载模型文件
NSManagedObjectModel *model=[NSManagedObjectModel mergedModelFromBundles:nil];
//传入模型对象,初始化NSPersistentStoreCoordinator对象
NSPersistentStoreCoordinator *psc=[[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model] autorelease];
//构建sqlite数据库文件的路径
NSString *docs=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSURL *url=[NSURL fileURLWithPath:[docs stringByAppendingPathComponent:@"person.db"]];
NSError *error=nil; if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error]) { //[NSException raise:@"创建数据库失败" format:@"%@",[error localizedDescription]];
NSLog(@"创建数据库失败-->%@",[error localizedDescription]);
} self.context=[[NSManagedObjectContext alloc] init];
self.context.persistentStoreCoordinator=psc;
[_context release]; } - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (IBAction)addclick:(id)sender {
Person *person=[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.context];
person.name=@"gcb111";
person.age=@; Car *car=[NSEntityDescription insertNewObjectForEntityForName:@"Car" inManagedObjectContext:self.context];
//[car setValue:@"123456789456" forKey:@"no"];
car.no=@"ssss111111"; car.person=person; NSError *error=nil;
[self.context save:&error];
if(error){
NSLog(@"-->同步失败-->%@",error.localizedDescription);
}
else{
NSLog(@"--->同步成功-->");
}
} - (IBAction)selectClick:(id)sender { //创建查询请求
NSFetchRequest *request=[[NSFetchRequest alloc] init];
//获取请求的实体
request.entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.context];
NSSortDescriptor *sort=[[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
request.sortDescriptors=@[sort];
NSError *error=nil;
NSArray *arr=[self.context executeFetchRequest:request error:&error];
if (error) {
NSLog(@"-->查询失败-%@",error.localizedDescription);
return;
}
for (Person *p in arr) {
NSLog(@"-->%@-->%@",p.name,p.age);
} } - (IBAction)UpdateClick:(id)sender {
NSArray *arr=[self queryByAge:];
for (Person *p in arr) {
p.age=@;
}
NSError *error=nil;
[self.context save:&error];
if (error) {
NSLog(@"-->失败-%@",error); }
} - (IBAction)DelClick:(id)sender { NSArray *arr=[self queryByAge:];
for (Person *p in arr) {
[self.context deleteObject:p];
}
NSError *error=nil;
[self.context save:&error];
if (error) {
NSLog(@"-->失败-%@",error); }
} -(NSArray *)queryByAge:(int)age{
NSFetchRequest *request=[[NSFetchRequest alloc] init];
request.entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.context]; NSPredicate *predicate=[NSPredicate predicateWithFormat:@"age=%i",age];
request.predicate=predicate;
NSError *error=nil;
NSArray *arr=[self.context executeFetchRequest:request error:&error];
if (error) {
NSLog(@"-->查询失败-%@",error.localizedDescription);
return nil;
}
return arr;
}

ios中coredata的更多相关文章

  1. IOS中CoreData浅析

    CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...

  2. iOS 中CoreData的简单使用

    原文链接:http://www.jianshu.com/p/4411f507dd9f 介绍:本文介绍的CoreData不在AppDelegate中创建,在程序中新建工程使用,即创建本地数据库,缓存数据 ...

  3. iOS中coreData的用法

    // // ViewController.m // coredatademo002 // // Created by ganchaobo on 13-6-29. // Copyright (c) 20 ...

  4. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  5. QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData

    SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...

  6. iOS中的数据持久化方式

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...

  7. iOS 中有用的开源库

    youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配 ...

  8. iOS中常用的四种数据持久化技术

    iOS中的数据持久化方式,基本上有以下四种:属性列表 对象归档 SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults st ...

  9. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

随机推荐

  1. iOS开发-策略模式

    策略(Strategy)模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.策略模式是对算法的包装,是把使用算法的责任和算法本身分割开 ...

  2. 八一八android开发规范(一种建议)

    开发规范重不重要了,不言而喻.这里就给大家说一故事把——据<圣经·旧约·创世记>第11章记载,是当时人类联合起来兴建,希望能通往天堂的高塔.为了阻止人类的计划,上帝让人类说不同的语言,使人 ...

  3. Cognos11中ActiveReport在移动端的应用

    一.环境准备 1.1:前提准备 需要安装了cognos server11,并且已经配置好了服务端 IBM Cognos 版本:IBM Cognos Analytics 11.0.6 IBM Cogno ...

  4. (转)HLSL,函数列表

    中文列表 函数名 说明 abs 计算输入值的绝对值. acos 返回输入值反余弦值. all 测试非0值. any 测试输入值中的任何非零值. asin 返回输入值的反正弦值. atan 返回输入值的 ...

  5. 最全的spark基础知识解答

    原文:http://www.36dsj.com/archives/61155 一. Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduc ...

  6. 理解JavaScript函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数. arguments javascri ...

  7. Github 基本操作

    .配置Git 首先在本地创建ssh key:$ ssh-keygen -t rsa -C "your_email@youremail.com" 后面的your_email@your ...

  8. Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解

    Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解 一.Jquery遍历筛选数组 1.jquery grep()筛选遍历数组 $().ready( function(){ v ...

  9. Selenium2(webdriver)_定位不到元素常见原因及解决办法

    在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理 ...

  10. Excel 2007 若干技巧。

    1.自定义序列 office按钮→excel选项→常用→编辑自定义列表 2.无法清空剪贴板错误的处理办法: 取消"显示粘贴选项"选项 3.每次选定同一单元格 输入后按ctrl+En ...