ios coredata 老代码备用参考

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》

创建ios项目

为了方便,直接用xcode工具向导创建项目,这样可以自动集成core data的支持。

不一定创建window-based项目,split view-based也可以,用于ipad项目,或者对于iphone的navigation-based项目亦可。

创建实体

比如java里的实例需要编写java类和对应的mapping文件(也可能是注解)。在ios里,需要两步:

  • 图形界面的设计工具,设计实体、实体属性和实体的关系
  • 生成实体的类,也就是对应的.h和.m文件

创建的项目比如叫aaa,那么找到aaa.xcdatamodel:

双击它,可调出模型编辑器。创建一个Person实体。

点击上图的加号创建一个新的实体(entity),然后在entity的文本框中填写实体名称。回车就可以看到下面类似uml类图的图形名称变为Person。

然后创建属性:

点击属性部分的加号,选择Add Attribute,增加一个id,数字的:

然后,设置为自增列:

再设置个name属性:

如果有多个实体,继续创建,或者创建它们之间的关系。

然后,生成实体类,供编写程序时调用。

创建新文件,注意要在实体编辑器界面,可以选中Person实体,这样生成的文件名就是Person:

选择 managed object class:

然后:

然后选中需要的实体,finish:

在项目中生成了实体类:

在代码中使用实体

首先,需要在使用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]]; 
[email protected]"张三";

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];

时间: 2024-10-12 22:50:58

ios coredata 老代码备用参考的相关文章

iOS实现地图半翻页效果--老代码备用参考

// Curl the image up or down CATransition *animation = [CATransition animation]; [animation setDuration:0.35]; [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; if (!curled){ //animation.type = @"mapCurl"; animation.type = @"page

iOS 支付宝应用(备用参考2)

接入前期准备工作包括商户签约和密钥配置 步骤1:  启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下, 并导入到项目工程中. AlipaySDK.bundle    AlipaySDK.framework 步骤2:  在需要调用AlipaySDK的文件中,增加头文件引用.#import <AlipaySDK/AlipaySDK.h> 步骤3: 配置请求信息. Order *order = [[Order alloc] init];           order.

iOS 支付宝应用(备用参考)

1:先与支付宝签约,获得商户ID(partner)和账号ID(seller) 2:下载相应的公钥私钥文件(加密签名用) 3:下载支付宝SDK 4:生成订单信息5:调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道6:支付完毕后返回支付结果给商户客户端和服务 , SDK里有集成支付宝功能的一个Demo> 集成支付功能的具体操作方式,可以参考Demo //生成订单信息及签名请求参数没有 return_URL这个参数,商户可以根据自身情况选择签名方法NSString *[email protec

iOS coredata 数据库升级 时报Can&#39;t find model for source store

在coredata 数据库结构被更改后,没根据要求立即建立新version,而是在原version上进行了小修改,之后才想起来建立新版本.并通过以下代码合并数据库, NSError *error = nil; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

ios CoreData框架的使用,对上下文数据的增删改查,表与表之间的关联,1对多,1对1,谓词查询,多表连接

这里是只是代码,因为博客插入图片效果不是很好,我自己写的总结比较详细,有兴趣的朋友可以在评论里留下邮箱,我收到后会发给大家. 转载注明出处,重视原创者的劳动成果,谢谢! - (void)viewDidLoad { [super viewDidLoad]; [self _creatTable];//插入数据 //    [self _query];// 查询数据 // KVC很霸道,即使readonly通过kvc也可赋值,kvo精华 //    Book * book = [[Book alloc

ios CoreData 用父类的实例对象person接收存有子类的数组,打印person.class ,结果是子类类名?还是父类类名(已解决)

新建Person类 person的子类 Student Teacher 今天做数据库封装时想到的,因为查询出的结果都继承自NSManagerObject,但是他的子类属性又不一定一样,所以我就想我在在查询之后能不能判断他是那个子类并且按照子类的属性进行赋值,所以首先我要数组存的对象的类进行判断 测试如下:(把主要代码贡献如下,其他文件自己建议下吧,很简单) NSMutableArray * array = [NSMutableArray array]; NSMutableArray * arra

我动了十年的老代码…

老代码的禁忌- 如果你恨一个程序员,就让他去维护年久失修的老代码吧! 尽管这样,我们对老代码仍是恨之厌之烦之远之却不可弃之,它已经老而成精有了生命. 每当有新人来时,它都会- 禁忌就这样传承了下来.我们知道它有很多问题,可是没人敢去动它. 于是,故事开始了- 新版51CTO家园,哪里不一样了? 呵呵,我们下手,还能让它有一样的地方吗?! 像小编这么清新脱俗的画风,那新版51CTO家园也是带有清新气息的! But!如果你只看到了清新脱俗的UI设计,那我只能说:你将错过整个银河系- 我们还有- 精准

十年的老代码,你敢动?

你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通了svn权限,告诉你迁出哪个分支--就是那个十年前已经定型的分支,就是那个超过6代程序员维护过的分支--然后告诉你说,就在这个分支上改,添加一个新接口,以便支持H5 Video. 于是你开始看代码,云山雾罩,各种痛苦,完全搞不懂业务逻辑和代码的关系,也闹不明白这块代码为什么这么写那块代码是几个意思.你战战兢兢如履薄冰思前想后寸步难行. 你去问进来5个多月还没转正的老同事,他告诉你他也不懂,让你凑合着加个新接口实现了功能就行.加了新功能

iOS开发 纯代码创建UICollectionView

转:http://jingyan.baidu.com/article/eb9f7b6d8a81a5869364e8a6.html iOS开发 纯代码创建UICollectionView 习惯了使用xib和StoryBoard创建UICollectionView项目工程的伙伴,需要转换使用纯代码来实现,想避免碰更多的壁,就需要认真了解创建UICollectionView过程了.创建UICollectionView比创建UITableView更加复杂,初始化方式也是相对奇特.以下是使用纯代码创建UI