Realm的简单使用

简介:

Realm个人理解: 它主要是一套移动端数据库框架,将对数据库表的操作转换为对对象的操作,如果是学过Java ORM框架的同学使用Realm起来应该上手比较快一点。而且据我所知Realm不仅支持Objective-C、Swift还支持Java等等。

PS:如何安装就不在这里多费口舌了,想必学习到这个框架的时候,各位大多应该已经不是新手了。接下来我们就直接来接触一下基本的增删改查操作。

一、这里是一个我们操作对象Person的.h文件,在引入Realm后我们的对象必须继承自RLMObject。

 1 #import <Realm/Realm.h> 2  3 @interface Person : RLMObject 4  5 @property NSInteger _ID; 6  7 @property NSString *name; 8  9 @property NSInteger age;10 11 @property NSString *sex;12 13 @end

二、创建一个Viewcontroller在里面添加四个按钮并添加相应事件

  1 #import "RealmViewController.h"  2   3 @interface RealmViewController ()  4   5 @property NSInteger IDNumber;  6   7 @end  8   9 @implementation RealmViewController 10  11 - (void)viewDidLoad { 12     [super viewDidLoad]; 13      14     _IDNumber = 1000; 15      16     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 17     NSString *docDir = [paths objectAtIndex:0]; 18     NSLog(@"%@", docDir); 19  20 } 21  22 - (IBAction)insertAction:(id)sender { 23     //这里主要是帮我们创建一个default.realm数据文件(数据库名可更改,后期介绍) 24     RLMRealm *realm = [RLMRealm defaultRealm]; 25      26     //打开数据库事务 27     [realm transactionWithBlock:^(){ 28         Person* _temp = [[Person alloc] init]; 29         _temp._ID = _IDNumber++; 30         _temp.name = @"realm"; 31         _temp.age = 26; 32         _temp.sex = @"male"; 33         //添加到数据库 34         [realm addObject:_temp]; 35         //提交事务 36         [realm commitWriteTransaction]; 37     }]; 38 } 39  40 - (IBAction)updateAction:(id)sender { 41     //数据库操作对象 42     RLMRealm *realm = [RLMRealm defaultRealm]; 43      44     [realm transactionWithBlock:^(){ 45         //获得对象 46         RLMResults* result = [Person allObjects]; 47         //获得第一个对象 48         Person* temp = [result objectAtIndex:0]; 49          50         //修改sex 51         temp.sex = @"ttt"; 52          53         //提交事务,即被修改 54         [realm commitWriteTransaction]; 55          56     }]; 57 } 58  59 - (IBAction)deleteAction:(id)sender { 60     //数据库操作对象 61     RLMRealm *realm = [RLMRealm defaultRealm]; 62      63     [realm transactionWithBlock:^(){ 64          65     //获得对象 66     RLMResults* result = [Person allObjects]; 67     //删除第一个元素 68     [realm deleteObject:result.firstObject]; 69  70     }]; 71 } 72  73  74 - (IBAction)selectAction:(id)sender { 75  76      //获得当前所有数据 77     RLMResults* tempArray = [Person allObjects]; 78      79     for (Person* model in tempArray) { 80         //打印数据 81         NSLog(@"ID : %ld, name : %@, age : %ld , sex : %@",model._ID,model.name,model.age,model.sex); 82          83     } 84 } 85  86  87 - (void)didReceiveMemoryWarning { 88     [super didReceiveMemoryWarning]; 89     // Dispose of any resources that can be recreated. 90 } 91  92 /* 93 #pragma mark - Navigation 94  95 // In a storyboard-based application, you will often want to do a little preparation before navigation 96 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 97     // Get the new view controller using [segue destinationViewController]. 98     // Pass the selected object to the new view controller. 99 }100 */101 102 @end

注意:在insert的对象中对象的所有属性必须正确赋值,否则插入失败。

解析:1,我在ViewDidLoad中将当前的Document目录进行Print是为了方便我们查看数据库文件。

2,在插入数据后我们还需要另外一个工具来查看数据库文件。

3,去到之前print的目录下找到default.realm文件并用上一步我们下载的工具Realm Browser查看,如下图:
















本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1950816 ,如需转载请自行联系原作者



相关文章
|
前端开发
html中行内元素、块级元素、行内快元素都有哪些,以及区别
html中行内元素、块级元素、行内快元素都有哪些,以及区别
442 1
|
网络协议 网络性能优化
TCP协议和HTTP协议的关系是什么?底层原理是什么?
TCP协议和HTTP协议的关系是什么?底层原理是什么?
1791 0
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
16天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
625 217
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
861 61
|
8天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1341 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
249 138