iOS-简单使用core data

iOS-简单使用core data

来自   Fgamers
681 次阅读 评论 (0)

iPhone OS在2009年6月份推出3.0版本SDK,其中一个特性是引入了Mac SDK中的core data。是一种ORM(Object Relationships Mapping)解决方案,类似java的Hibernate。

有了这个,就不必像ios简单sqlite使用那样编写繁琐代码了,减少工作量,也可以回避使用c的语法,降低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实例类的代码头文件中加入:

1
2
3
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "Person.h"

使用core data的简单代码,创建一个Person实体实例,保存它,然后遍历数据,相当于:select * from persons:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    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];

原文链接:http://marshal.easymorse.com/archives/3377

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值