//
// 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. Spiral Matrix II leetcode java

    题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...

  2. 记录Activity启动时间 ActivityLifecycleCallbacks

    ActivityStackManager 定义一个集合(Stack)保存所有还未销毁的 Activity public class ActivityStackManager { private Sta ...

  3. JS弹出层遮罩,隐藏背景页面滚动条细节优化

    做过弹层组件的童鞋应该都考虑过特殊情况下取消页面滚动条,让其不能滚动,这样用户体验会好很多,当弹层内容超出屏幕展现范围的时候在弹层上面增加滚动条来查看全部内容. 一.去除滚动条方法给body添加ove ...

  4. Python3 简单验证码识别思路及实例

    1.介绍 在爬虫中经常会遇到验证码识别的问题,现在的验证码大多分计算验证码.滑块验证码.识图验证码.语音验证码等四种.本文就是识图验证码,识别的是简单的验证码,要想让识别率更高, 识别的更加准确就需要 ...

  5. 用keras实现lstm 利用Keras下的LSTM进行情感分析

    1    I either LOVE Brokeback Mountain or think it’s great that homosexuality is becoming more accept ...

  6. JAVA-MyBatis ORM

    MyBatis 的前身就是 iBatis .是一个数据持久层(ORM)框架. iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久 ...

  7. Linux动态链接库的使用

    1.前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找.排序.为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库.通过动态链接库可以实现多个 ...

  8. JavaScript中一个对象如何继承另外一个对象

    如题,JavaScript中一个对象a如何继承另外一个对象b.即将b中的属性和方法复制到a中去. 面试中遇到了这个问题,当时脑子里的想法是: 1.除了循环遍历复制,还能怎样 2.javascript中 ...

  9. 论文阅读:Memory Networks

    一.论文所解决的问题 实现长期记忆(大量的记忆),而且实现怎样从长期记忆中读取和写入,此外还增加了推理功能 为什么长期记忆非常重要:由于传统的RNN连复制任务都不行,LSTM预计也够玄乎. 在QA问题 ...

  10. WinCE 下编程须要IP地址控件咋办?

    默认控件栏里面没有IP Address Control. 可是 WinCE 系统内的网络属性中是有这种控件的,想知道怎么调用IP Address Control的吗? 先通过远程工具 Remote S ...