ios中coredata
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的更多相关文章
- IOS中CoreData浅析
CoreData简介: 什么是CoreData? Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中, ...
- iOS 中CoreData的简单使用
原文链接:http://www.jianshu.com/p/4411f507dd9f 介绍:本文介绍的CoreData不在AppDelegate中创建,在程序中新建工程使用,即创建本地数据库,缓存数据 ...
- iOS中coreData的用法
// // ViewController.m // coredatademo002 // // Created by ganchaobo on 13-6-29. // Copyright (c) 20 ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- iOS 中有用的开源库
youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配 ...
- iOS中常用的四种数据持久化技术
iOS中的数据持久化方式,基本上有以下四种:属性列表 对象归档 SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults st ...
- iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
随机推荐
- java正则校验,密码必须由字母和数字组成
一个匹配数字和字母密码的正则表达式 2011 年 12 月 14 日 | Filed under: 正则表达式 and tagged with: 密码 , 正则表达式 , 零宽断言 一个用户注册功能的 ...
- Redis学习手册(主从复制)(转)
一.Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理论性的 ...
- fastjson生成json时Null属性不显示 (转)
http://blog.csdn.net/u010648555/article/details/51422340 null对应的key已经被过滤掉:这明显不是我们想要的结果,这时我们就需要用到fast ...
- 能够在Linux系统中运行的5款大型耐玩游戏
Linux 可能不会很快成为游戏玩家选择的平台 —— Valve Steam Machines 的失败似乎是对这一点的深刻提醒 —— 但这并不意味着该平台没有稳定增长,并且拥有相当多的优秀游戏. 从独 ...
- jchat-windows-master 编译输出日志
第一个项目成功生成的输出日志 >------ 已启动全部重新生成: 项目: QxOrm, 配置: Debug x64 ------ >Moc'ing IxModel.h... >Mo ...
- 【Python】使用内置base64模块进行编解码
代码: import hashlib import base64 hash = hashlib.md5() hash.update('逆火Tu22m'.encode('utf-8')) print(h ...
- Creating objects on stack or heap
class Player { private: int health; int strength; int agility; public: void move(); void attackEn ...
- 公共Maven库
<repository><id>codelds</id><url>https://code.lds.org/nexus/content/groups/m ...
- Python过滤emoji
参考博客:http://my.oschina.net/jiemachina/blog/189460 1. 将emoji表情替换为指定字符串 import re def filter_emoji(des ...
- iOS webservice SOAP 请求
1. Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语 ...