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数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...
随机推荐
- 纯JS单页面赛车游戏代码分享
分享一个以前写的小游戏,纯js游戏,代码很简单.欢迎大家来喷呦! 效果图: 代码展示://直接复制到html文件即可 支持IE9+版本 <!DOCTYPE html> <html&g ...
- hibernate 对象三态(瞬态、持久态、脱管态)之我见
刚开始学习hibernate时,对其对象的三种状态理解的模模糊糊,一直停留在一知半解的状态,前两天又回顾了一下,顿时醒悟,原来三种状态理解起来是很容易的. 先看一下对Hibernate对象状态的解释: ...
- Laravel 5.2 教程 - 迁移
一.简介 迁移(Migrations)是一种数据库的版本控制.可以让团队在修改数据库结构的同时,保持彼此的进度一致.迁移通常会和 结构生成器 一起使用,可以简单的管理数据库结构. 下面以创建学生表的迁 ...
- 蓝桥杯-n级台阶-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Android WebView导入HTML使Js生效的方法
WebSettings ws = webview.getSettings(); ws.setJavaScriptEnabled(true);//加上这句 webview.loadDataWithBas ...
- php表单提交 图片、音乐、视频、文字,四种类型共同提交到数据库
这个问题一直困扰了我好几天,终于在今天让我给解决了,难以掩饰的激动. 其实在之前没有接触到这种问题,只是表单提交数据而已,再就是图片,四种类型同时提交还真是没遇到过,做了一个系统,其中有一个功能就是提 ...
- OC中@class的使用
作用: 可以简单地引用一个类简单使用@class Dog; //类的引入 #import "Dog.h"仅仅是告诉编译器:Dog是一个类;并不会包含Dog这个类的所有内容 具体使用 ...
- 如何将angular-ui的图片轮播组件封装成一个指令
在项目开发中我们经常会遇到图片轮播的功能点: 如果我们开发人员自己原生手写,将会花费很多的时间,最终得不偿失. 接下来就详细说说如何使用angular-ui发热图片轮播模块,并且将它写成一个指令(便于 ...
- ios模拟器bug
Error: xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Libra ...
- 在R中整理数据
原始数据一般分散杂乱,并含有缺失和错误值,因此在进行数据分析前首先要对数据进行整理. 一.首先,了解原始数据的结构. 可使用如下函数(归属baseR)来查看数据结构: class(dataobject ...