您的位置:首页 > 移动开发 > Objective-C

Realm Objective-C 数据库操作

2016-09-27 15:36 155 查看

今天研究了一下Realm数据库,觉得特别厉害哈。Realm支持iOS,OS X,Android,速度快,操作相对来说比较简单。

最重要的是官网对于数据库版本升级和迁移的问题(这个在以前使用FMDB感觉是非常复杂的问题),提供了简单容易的办法。

下面使用object-C语言来操作常见的增,删,改,查操作。swift先暂时不写了,swift还不稳定,等2.0再说。

参考地址:

http://www.cocoachina.com/ios/20150505/11756.html

https://realm.io/cn/

https://realm.io/docs/objc/latest/api/

1.Realm安装(参考官网,但是我有修改)

手动安装 (Objective-C & Swift)

下载最新的Realm发行版本并在本地解压缩.

从ios/或者osx/目录里,把Realm.framework文件拖动到你的Xcode开发项目里的File Navigator 中。确保Copy items into destination group’s folder已经被选中,按Finish

在Xcode file explorer中选中你要的开发项目.选择target,点击Build Phases选项. 在Link Binary with Libraries里按+, 添加libc++.dylib.

如果使用Realm + Swift, 拖动Swift/RLMSupport.swift到你的Xcode project的File Navigator中。点选Copy items if needed

如果在OSX项目中使用Realm,点击左上角的 + ,选择New Copy Files Phase,将其重命名为Copy Frameworks, 将Destination设置为Frameworks,并且添加Realm.framework。

特别强调,在iOS目录里面,有2个文件夹,请添加static文件夹的Realm.framework,我暂时不明白使用dynamic文件为什么会报错。

PS:Realm浏览器在需要在github里面找,在tools文件夹里面,官网的压缩包里面不存在这个。需要运行

Realm Browser项目,可以导出安装包,成为独立的安装包。



Realm Browser界面

创建一个测试项目,即可开始操作数据库。下面示例操作:

2.增加操作


@interface Person : RLMObject //人员

@property NSInteger _ID; //ID

@property NSString* name; //姓名

@property NSInteger age; //年龄

@property NSString* sex; //性别

@end


创建一个人员类,继承RLMObject(必须继承)


//数据库操作对象

RLMRealm *realm = [RLMRealm defaultRealm];

//打开数据库事务

[realm transactionWithBlock:^(){

Person* _temp = [[Person alloc] init];

_temp._ID = ++_Count; //计算的当前ID

_temp.name = @"kevingao";

_temp.age = 26;

_temp.sex = @"male";

//添加到数据库

[realm addObject:_temp];

//提交事务

[realm commitWriteTransaction];

}];


一个简单的添加操作,其他事情不需要我们来管理,RLMRealm会帮助我们搞定。

3.查询操作

下面我们查询所有的数据。


//获得当前所有数据

RLMResults* tempArray = [Person allObjects];

for (Person* model in tempArray) {

//打印数据

NSLog(@"ID : %ld, name : %@, age : %ld , sex : %@",model._ID,model.name,model.age,model.sex);

}


查询操作可能是最复杂的操作,使用谓词或者是objectWhere语句来设计查询语句来查询。

4.修改操作


//数据库操作对象

RLMRealm *realm = [RLMRealm defaultRealm];

[realm transactionWithBlock:^(){

//获得对象

RLMResults* result = [Person allObjects];

//获得第一个对象

Person* temp = [result objectAtIndex:0];

//修改sex

temp.sex = @"ttt";

//提交事务,即被修改

[realm commitWriteTransaction];

}];



5.删除操作


//数据库操作对象

RLMRealm *realm = [RLMRealm defaultRealm];

[realm transactionWithBlock:^(){

//获得对象

RLMResults* result = [Person allObjects];

//清空

[realm deleteObject:result.firstObject];

}];

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: