博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Realm Objective-C 数据库操作
阅读量:6942 次
发布时间:2019-06-27

本文共 2220 字,大约阅读时间需要 7 分钟。

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

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

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

参考地址:

 

 

 

 

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


手动安装 (Objective-C & Swift)

下载并在本地解压缩.

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

}];

转载于:https://www.cnblogs.com/yuwei0911/p/5913039.html

你可能感兴趣的文章
javascript 杂谈之哪种写法你更喜欢?
查看>>
nil localizedTitle in SKProduct
查看>>
EGORefreshTableHeaderView学习
查看>>
POJ3364
查看>>
爪哇国新游记之十一----用异常控制流程
查看>>
Oracle中rownum用法警示
查看>>
【转】Delphi调用webservice总结
查看>>
为你的应用加速 - 安卓优化指南
查看>>
【USACO 2.1】Hamming Codes
查看>>
【GoLang】GoLang 中 make 与 new的区别
查看>>
《Unix内核源码剖析》
查看>>
Windows phone 应用开发[4]-开发人员Metro UI设计指南
查看>>
保卫萝卜官方PC版——含绿色版 V1.0.6Beta
查看>>
聚合类新闻client产品功能点详情分析
查看>>
突袭HTML5之WebSocket入门5 - 包管理工具npm
查看>>
HDU-4255 A Famous Grid BFS
查看>>
每日英语:Everything You Think You Know About China Is Wrong
查看>>
带线的无限级下拉树列表-完整示例篇
查看>>
Clipboard with Custom Clipboard Formats - Delphi
查看>>
[Step By Step]SAP HANA PAL 异态检测算法Anomaly Detection实现例程ANOMALYDETECTION
查看>>