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 ...
随机推荐
- Three.js中如何显示帧速【转】
https://blog.csdn.net/hannahlwh1988/article/details/36876295 Step1:src中添加: <script src="js/s ...
- [转载]设置Chrome忽略网站证书错误
某些用户可能经常会遇到Chrome浏览器提示网站证书错误的情况,尤其是在Google升级证书检查力度之后,访问Google时已经不能在浏览器界面中忽略证书错误访问. 比如说公司的IT修改过证书就会遇到 ...
- android 框架层 常用类介绍
名称 功能描述 示意图 activitymanager 管理应用程序的周期并提供常用的回退功能 window manager 窗口管理者 content provider 用于访问另一个的数据,或者共 ...
- C++可变参数列表处理宏va_list、va_start、va_end的使用
VA_LIST是在C语言中解决变参问题的一组宏他有这么几个成员: 1)va_list型变量: #ifdef _M_ALPHA typedef struct{ char* a0; /* ...
- HMM与分词、词性标注、命名实体识别
http://www.hankcs.com/nlp/hmm-and-segmentation-tagging-named-entity-recognition.html HMM(隐马尔可夫模型)是用来 ...
- Python机器学习——线性模型
http://www.dataguru.cn/portal.php?mod=view&aid=3514 摘要 : 最近断断续续地在接触一些python的东西.按照我的习惯,首先从应用层面搞起, ...
- java 从网络Url中下载文件 (转)
http://blog.csdn.net/xb12369/article/details/40543649/ /** * 从网络Url中下载文件 * @param urlStr ...
- (转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1. ...
- ASP入门(十八)-访问Access中的数据库
Northwind 数据库 这是一个微软为软件的使用者提供的一个练习用的数据库,它模拟了一个商贸公司日常业务流程所需要的一些数据. 并且网络上大部分的 SQL 语句的讲解都是以这个数据库为例子讲解的. ...
- linphone
官方网站 源码下载: linphone, including: oRTP mediastreamer2 liblinphone linphonec linphone (gtk) git clone g ...