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查看,如下图:
Realm的简单使用相关推荐
- Android 接入Realm并使用
今天看自己写的github demo 看到Realm 这里在回顾下 github 搜索Realm 我们可以选择java 可以看到Realm 介绍: Realm是直接在手机,平板电脑或可穿戴设备内部运行 ...
- OAuth2 服务器Keycloak中的Realm
前几篇我和大家一起对Keycloak进行了粗略的了解.随着逐步的了解,我发现进入了一个误区,原本以为Spring Security整合Keycloak的重心在于Spring Security这一方面, ...
- 手把手教你从Core Data迁移到Realm
来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...
- Android数据库Realm学习(一)基本使用
Realm Java文档 技术文档,开卷有益 刚刚开始用Realm,肯定是要对比着SQLite来琢磨的,说几个个人认识: 一.SQLite中的数据库名对应Realm的啥 Realm可以简单直接使用 ...
- greenDAO与Realm的探索
最近项目中要用到数据库相关的知识,就在网上查了下Android平台上的数据库框架,目前比较热门有GreenDAO和Realm,这两个都是使用者都比较多,并且都在持续发布更新,就对这两个框架进行了一些探 ...
- 深入解析Sqlite的完美替代者,android数据库新王者——Realm
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...
- shiro(2)-架构与配置
认证就是用户确认身份的过程,确认登录的用户身份能够操作的内容. 使用shiro认证分为以下几个步骤: 1,得到主体的认证和凭据. // let's login the current user so ...
- Shiro 权限框架使用总结
我们首先了解下什么是shiro ,Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨 ...
- spring boot shiro redis整合基于角色和权限的安全管理-Java编程
一.概述 本博客主要讲解spring boot整合Apache的shiro框架,实现基于角色的安全访问控制或者基于权限的访问安全控制,其中还使用到分布式缓存redis进行用户认证信息的缓存,减少数据库 ...
最新文章
- Microsoft SQL Server SA权限最新入侵方法
- matplotlib 横坐标只显示整数_matplotlib初学:这样画折线图和添加标注、箭头
- channelartlist标签不能调用外部链接栏目的解决办法
- 2021HDU多校7 - 7054 Yiwen with Formula(分治MTT优化dp)
- Kafka消息格式中的变长字段(Varints)
- 在 Azure Functions 上使用不同的路由前缀
- 飞鸽传书完全不知道这是什么
- 模版 ----- 一维前缀和与二维前缀和
- 多个DbContext修改同一张表测试
- tp5设置session过期时间
- java 重载的特征_Java中方法的重载详解
- 矢量绘图软件源码定制开发,类似visio绘图,大量复合图元模板,可编程动态控制图元
- oracle蓝屏解决方法,win10系统蓝屏怎么办 蓝屏代码0x000007e的3种解决方法
- 将图片(HDC)打印出来
- 《无声告白》这不是我想要的生活
- 舌尖上的职场(三)我来买单!(转)
- 秦小明 第七讲 资产定价模型,股票定价
- 众多的.ts文件、.key文件、.m3u8文件,合并成一个完整的mp4格式的视频
- IBM ThinkPad F11系统恢复完全技巧
- STFT短时傅里叶变换的实现