//
// 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的用法的更多相关文章

  1. iOS中block的用法 以及和函数用法的区别

    ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候  MyBlock(); 带参数的 ...

  2. IOS中CoreData浅析

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

  3. iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

    1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...

  4. ios中图片拉伸用法

    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCap ...

  5. iOS中的CocoaPods用法及常用命令

     CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...

  6. iOS 中CoreData的简单使用

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

  7. ios中Pldatabase的用法

    将PLDATABASE加入到工程 下载PLDatabase 的dmg文件 将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操 ...

  8. iOS中NSScanner 的用法

    NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以创建NSScanner时制定他的String属性,然后scanner会按照你的要求从头到尾扫描这 ...

  9. IOS中NSUserDefaults的用法(轻量级本地数据存储)

    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefa ...

随机推荐

  1. iOS开发-App Icons的尺寸大小

    每个App中Icon的尺寸大小是不一样的,如果你添加部分尺寸的Icon,有些没有添加,xCode会给出相应的警告,最近遇到一个问题就是A 76x76 app icon is required for ...

  2. [javase学习笔记]-6.4 成员变量与局部变量

    前面我们学习了类的定义,我们不难理解,定义类事实上就是在定义类中的成员. 成员包含成员变量和成员函数. 说到成员变量,我们非常自然会想到前面提到过的局部变量,那么它们之间有什么差别呢? 首先我们定义一 ...

  3. QuickXDev插件自己主动升级后player no exist

      昨晚上QuickXDev插件执行还ok,今天打开电脑启动sublime text2后.右键run with player提示player no exist watermark/2/text/aHR ...

  4. JAVA动态编译(JavaCompiler)

    一.简介 在java中javax报下提供了JavaCompiler类,此类可以允许开发人员编译java文件为class文件. 下面示例中是利用JavaCompiler编译文件,并利用URLClassL ...

  5. C#获取程序启动目录

    //WCF service: string servicePath = System.Web.Hosting.HostingEnvironment.MapPath("~"); // ...

  6. Axure-Axure RP For Chrome 演示扩展

    Axure RP生成的Html原型,其中包含JS文件,在本地进行演示时浏览器IE会弹出安全提醒.谷歌浏览器Chrome则需要在线安装一个Axure的扩展工具才可以演示. Axure RP Extens ...

  7. How to Redirect in ASPNET Web API

      You could set the Location header: public HttpResponseMessage Get() { var response = Request.Creat ...

  8. 发布web应用程序是出现unsafe code

    找到了解决办法 解决方法参照: https://stackoverflow.com/questions/16567197/publish-web-application-with-unsafe-cod ...

  9. Android 模仿QQ空间风格的 UI

    本文内容 环境 演示模仿QQ空间风格的UI 虽然这个 UI 跟现在的QQ空间有点差别,但是也能学到很多东西. 下载 Demo 环境 Windows 7 64 位 Eclipse ADT V22.6.2 ...

  10. DELL平板如何安装WIN10系统-磁盘分区问题

    已经进入PE之后,在这一步的时候,可以把默认的系统分区都移除,但是在计算机管理可能右击没有这个菜单,要用专门的软件弄   不要用分区助手,会提示不能对动态磁盘进行操作,要用Disk Genius(他的 ...