ios简单使用core data
2012-09-06 12:11
696 查看
iPhone OS在2009年6月份推出3.0版本SDK,其中一个特性是引入了Mac SDK中的core data。是一种ORM(Object Relationships Mapping)解决方案,类似java的Hibernate。
有了这个,就不必像ios简单sqlite使用那样编写繁琐代码了,减少工作量,也可以回避使用c的语法,降低ios开发的技术门槛。总之,可降低开发成本,提高项目质量。
本文在很大程度上参考了《Core
Data Tutorial for iOS》。
为了方便,直接用xcode工具向导创建项目,这样可以自动集成core data的支持。
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb82.png)
不一定创建window-based项目,split view-based也可以,用于ipad项目,或者对于iphone的navigation-based项目亦可。
比如java里的实例需要编写java类和对应的mapping文件(也可能是注解)。在ios里,需要两步:
图形界面的设计工具,设计实体、实体属性和实体的关系
生成实体的类,也就是对应的.h和.m文件
创建的项目比如叫aaa,那么找到aaa.xcdatamodel:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb83.png)
双击它,可调出模型编辑器。创建一个Person实体。
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb84.png)
点击上图的加号创建一个新的实体(entity),然后在entity的文本框中填写实体名称。回车就可以看到下面类似uml类图的图形名称变为Person。
然后创建属性:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb85.png)
点击属性部分的加号,选择Add Attribute,增加一个id,数字的:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb86.png)
然后,设置为自增列:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb87.png)
再设置个name属性:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb88.png)
如果有多个实体,继续创建,或者创建它们之间的关系。
然后,生成实体类,供编写程序时调用。
创建新文件,注意要在实体编辑器界面,可以选中Person实体,这样生成的文件名就是Person:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb89.png)
选择 managed object class:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb90.png)
然后:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb91.png)
然后选中需要的实体,finish:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb92.png)
在项目中生成了实体类:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb93.png)
首先,需要在使用Person实例类的代码头文件中加入:
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Person.h"
使用core data的简单代码,创建一个Person实体实例,保存它,然后遍历数据,相当于:select * from persons:
NSLog(@">>start app ");
Person *person=(Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
person.name=@"张三";
NSError *error;
if (![[self managedObjectContext] save:&error]) {
NSLog(@"error!");
}else {
NSLog(@"save person ok.");
}
NSFetchRequest *request=[[NSFetchRequest alloc] init];
NSEntityDescription *entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
NSArray *results=[[[self managedObjectContext] executeFetchRequest:request error:&error] copy];
for (Person *p in results) {
NSLog(@">> p.id: %i p.name: %@",p.id,p.name);
}
如果需要删除也很简单:
[managedObjectContext deleteObject:person];
有了这个,就不必像ios简单sqlite使用那样编写繁琐代码了,减少工作量,也可以回避使用c的语法,降低ios开发的技术门槛。总之,可降低开发成本,提高项目质量。
本文在很大程度上参考了《Core
Data Tutorial for iOS》。
创建ios项目
为了方便,直接用xcode工具向导创建项目,这样可以自动集成core data的支持。![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb82.png)
不一定创建window-based项目,split view-based也可以,用于ipad项目,或者对于iphone的navigation-based项目亦可。
创建实体
比如java里的实例需要编写java类和对应的mapping文件(也可能是注解)。在ios里,需要两步:图形界面的设计工具,设计实体、实体属性和实体的关系
生成实体的类,也就是对应的.h和.m文件
创建的项目比如叫aaa,那么找到aaa.xcdatamodel:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb83.png)
双击它,可调出模型编辑器。创建一个Person实体。
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb84.png)
点击上图的加号创建一个新的实体(entity),然后在entity的文本框中填写实体名称。回车就可以看到下面类似uml类图的图形名称变为Person。
然后创建属性:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb85.png)
点击属性部分的加号,选择Add Attribute,增加一个id,数字的:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb86.png)
然后,设置为自增列:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb87.png)
再设置个name属性:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb88.png)
如果有多个实体,继续创建,或者创建它们之间的关系。
然后,生成实体类,供编写程序时调用。
创建新文件,注意要在实体编辑器界面,可以选中Person实体,这样生成的文件名就是Person:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb89.png)
选择 managed object class:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb90.png)
然后:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb91.png)
然后选中需要的实体,finish:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb92.png)
在项目中生成了实体类:
![](http://marshal.easymorse.com/wp-content/uploads/2010/09/image_thumb93.png)
在代码中使用实体
首先,需要在使用Person实例类的代码头文件中加入:#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Person.h"
使用core data的简单代码,创建一个Person实体实例,保存它,然后遍历数据,相当于:select * from persons:
NSLog(@">>start app ");
Person *person=(Person *)[NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
person.name=@"张三";
NSError *error;
if (![[self managedObjectContext] save:&error]) {
NSLog(@"error!");
}else {
NSLog(@"save person ok.");
}
NSFetchRequest *request=[[NSFetchRequest alloc] init];
NSEntityDescription *entity=[NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
NSArray *results=[[[self managedObjectContext] executeFetchRequest:request error:&error] copy];
for (Person *p in results) {
NSLog(@">> p.id: %i p.name: %@",p.id,p.name);
}
如果需要删除也很简单:
[managedObjectContext deleteObject:person];
相关文章推荐
- IOS开发 core data 简单使用和注意
- iOS开发-CoreData的简单使用
- iOS开发:coredata的简单使用
- IOS CoreData的简单使用
- iOS之CoreData基本使用以及简单封装
- IOS CoreData 简单使用CURD
- iOS 6 编程--Core Data持久化数据存储(2)-使用Core Data实现简单ShoppingCart应用程序
- iOS开发-CoreData的简单使用
- IOS CoreData 简单使用CURD
- ios中coredata的使用
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- Core Data持久化数据存储(2)-使用Core Data实现简单ShoppingCart应用程序
- iOS CoreData的基本使用
- iOS coredata的使用及版本升级
- 详解iOS应用开发中Core Data数据存储的使用
- iOS开发过程中使用Core Data应避免的十个错误
- ios中的coredata的使用
- IOS之分析网易新闻存储数据(CoreData的使用,增删改查)
- 【iOS开发】 CoreText 使用教程:以创建一个简单的杂志应用为例
- iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)