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

PS:如何安装就不在这里多费口舌了,想必学习到这个框架的时候,各位大多应该已经不是新手了。接下来我们就直接来接触一下基本的增删改查操作。
一、这里是一个我们操作对象Person的.h文件,在引入Realm后我们的对象必须继承自RLMObject。
#import <Realm/Realm.h> @interface Person : RLMObject @property NSInteger _ID; @property NSString *name; @property NSInteger age; @property NSString *sex; @end
二、创建一个Viewcontroller在里面添加四个按钮并添加相应事件
#import "RealmViewController.h"
@interface RealmViewController ()
@property NSInteger IDNumber;
@end
@implementation RealmViewController
- (void)viewDidLoad {
[super viewDidLoad];
_IDNumber = ;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:];
NSLog(@"%@", docDir);
}
- (IBAction)insertAction:(id)sender {
//这里主要是帮我们创建一个default.realm数据文件(数据库名可更改,后期介绍)
RLMRealm *realm = [RLMRealm defaultRealm];
//打开数据库事务
[realm transactionWithBlock:^(){
Person* _temp = [[Person alloc] init];
_temp._ID = _IDNumber++;
_temp.name = @"realm";
_temp.age = ;
_temp.sex = @"male";
//添加到数据库
[realm addObject:_temp];
//提交事务
[realm commitWriteTransaction];
}];
}
- (IBAction)updateAction:(id)sender {
//数据库操作对象
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^(){
//获得对象
RLMResults* result = [Person allObjects];
//获得第一个对象
Person* temp = [result objectAtIndex:];
//修改sex
temp.sex = @"ttt";
//提交事务,即被修改
[realm commitWriteTransaction];
}];
}
- (IBAction)deleteAction:(id)sender {
//数据库操作对象
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^(){
//获得对象
RLMResults* result = [Person allObjects];
//删除第一个元素
[realm deleteObject:result.firstObject];
}];
}
- (IBAction)selectAction:(id)sender {
//获得当前所有数据
RLMResults* tempArray = [Person allObjects];
for (Person* model in tempArray) {
//打印数据
NSLog(@"ID : %ld, name : %@, age : %ld , sex : %@",model._ID,model.name,model.age,model.sex);
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
注意:在insert的对象中对象的所有属性必须正确赋值,否则插入失败。
解析:1,我在ViewDidLoad中将当前的Document目录进行Print是为了方便我们查看数据库文件。
2,在插入数据后我们还需要另外一个工具来查看数据库文件。

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

Last: 关注我,谢谢。持续更新!
Realm的简单使用的更多相关文章
- 深入解析Sqlite的完美替代者,android数据库新王者——Realm
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...
- 优于CoreData的Realm数据库基础教程
Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...
- 转: app端数据库(性能高) realm (ios, android 均支持)
转: http://ios.jobbole.com/85041/ 移动端数据库新王者:realm 2016/05/14 · iOS开发 · 数据库 分享到:0 原文出处: 没故事的卓同学(@没故事的 ...
- 手把手教你从Core Data迁移到Realm
来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...
- 手把手教你从 Core Data 迁移到 Realm
前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那么我先简单介绍一下这个新生的数据库.号称是用来替代SQLite 和 Core Data的.Realm有以下优点: 使用方便 Realm并 ...
- Realm
还在为数据库不能获取最新数据而犯愁?信我,你只是需要一个活着的数据库——Realm 写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里 ...
- 如何自定义Tomcat Realm实现我们的用户认证需求
导读 Tomcat对于J2EE或Java web开发者而言绝不陌生,但说到Realm,可能有些人不太清楚甚至没有听说过,那么到底什么是Realm?简单一句话就是:Realm是Tomcat中为web应用 ...
- 移动端数据库新王者:realm
介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...
- 使用技术手段限制DBA的危险操作—Oracle Database Vault
概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...
随机推荐
- 消息队列NetMQ 原理分析3-命令产生/处理和回收线程
消息队列NetMQ 原理分析3-命令产生/处理和回收线程 前言 介绍 目的 命令 命令结构 命令产生 命令处理 创建Socket(SocketBase) 创建连接 创建绑定 回收线程 释放Socket ...
- 接口加密《二》: API权限设计总结
来源:http://meiyitianabc.blog.163.com/blog/static/105022127201310562811897/ API权限设计总结: 最近在做API的权限设计这一块 ...
- 【lucene系列学习二】Lucene实现高亮显示关键词
首先,导入下图所示库 然后,import org.apache.lucene.search.highlight.*; 下面,我们新建一个实现高亮显示功能的函数 public static String ...
- 蓝桥杯-有奖猜谜-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- mongodb的简明使用
①.特性 文档数据库 高性能高可用性集群 文档是BSON对象 一个collection是一组相关的document,它们共享相同的indexs ②.如何使用 mongo; //进入mongodb ...
- 通过js来设置cookie和读取cookie,实现登陆时记住密码的功能
function setCookie(){ //设置cookie var loginCode = $("#login_code").val(); //获取用户名信息 var pwd ...
- PXC5.7集群部署
PXC三节点安装: node1:10.157.26.132 node2:10.157.26.133 node3:10.157.26.134 配置服务器ssh登录无密码验证 ssh-keygen实现 ...
- cordova 基本命令 以及如何添加,删除插件
1.首先下载安装 node.js 在命令提示符 里 输入 node -v 会显示版本号证明安装成功 2.全局安装 cordova: npm install -g cordova 命令提示符里输入 ...
- (5)微信二次开发 之 XML格式数据解析
1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...
- 增强for循环 -- foreach循环
1 作用 简化迭代器的书写格式.(注意:foreach循环的底层还是使用了迭代器遍历.) 2 适用范围 如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环. 3 格 ...