ios-Realm数据库的使用
【集成 Realm】
本 Demo 使用 OC 创建,所以先进入 Realm 官网 (我记得之前都是有官方中文教程的,但现在最新版没有中文了),到 Objective-C -> Getting started. 选择静态库,按如下提示做好。

上面做法是 1.下载Realm 包 2. 将 ios/static 文件的 Realm.framework 拖入工程。 3. Build Phases 下添加 libc++.tbd 和 libz.tbd。4. swift工程才需要做这点,但这里是OC,所以不用做。
下载 Realm Studio,它是一个很方便用来查看数据的工具,在开发中调试十分方便。如下是使用 Realm Studio 实时查看 ios 沙盒中 Realm 数据库数据的实时数据情况。

【实现的效果】

实际就是记录用户选择的城市,然后更新用户选择过的数据,并且最新选择的城市排在前面,只需要显示历史数据4条。
【开始 Realm 部分代码】
我们的 model 要先继承自 RLMObject。
Realm 的操作很简单,根据MVVM结构,它的这部分代码可以写到 ViewModel 中,在用户点下面城市数据时向 Realm 中新增对象就可以,然后如果存储的数据大于4条则删除多余数据。
// 插入一条数据
- (void)insertData:(LCityModel *)cityM
{
cityM.updateDate = [NSDate new];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
[LCityModel createOrUpdateInRealm:realm withValue:cityM];
[realm commitWriteTransaction]; // 判断如果大于4条就删除掉多于4条的最早的
RLMResults<LCityModel *> *results = [[LCityModel allObjects] sortedResultsUsingKeyPath:@"updateDate" ascending:NO];
if (results.count > ) {
for (int i = ; i < results.count; i ++ ) {
LCityModel *resultM = [results objectAtIndex:i];
[realm transactionWithBlock:^{
[realm deleteObject:resultM];
}];
}
}
}
ViewModel 中还需要有查询历史数据方法,将查询出的数据展示到历史数据 view 上,如下:
// 查询出4条最近的历史记录
- (NSMutableArray *)queryHistoryData
{
NSMutableArray *historyArray = [NSMutableArray array];
RLMResults *results = [[LCityModel allObjects] sortedResultsUsingKeyPath:@"updateDate" ascending:NO];
for (LCityModel *tempM in results) {
[historyArray addObject:tempM];
}
return historyArray;
}
在进入这个控制器页面时,也需要立即展示历史数据,所以在 ViewDidLoad 中也调用一下 [self reloadHistoryData];
- (void)reloadHistoryData
{
NSMutableArray *historyArray = [self.homeViewModel queryHistoryData];
[self.LTestView.historyView reloadDataWithArray:historyArray];
}
【demo地址】
码云: https://gitee.com/LiJinShi/DB_demo
ios-Realm数据库的使用的更多相关文章
- iOS中Realm数据库的基本用法
原文 http://git.devzeng.com/blog/simple-usage-of-realm-in-ios.html 主题 RealmiOS开发 Realm是由 Y Combinat ...
- iOS开发-Realm数据库
Realm Realm-Object-c,见:https://realm.io/cn/docs/objc/latest/Realm官网:https://realm.io 使用流程 导入头文件#impo ...
- 优于CoreData的Realm数据库基础教程
Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...
- Realm数据库的简单介绍和使用
给大家介绍一个数据库操作的框架Realm,本文主要以iOS 平台的使用场景为例. realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android: ...
- 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)
介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...
- [RN] React Native 使用 realm 数据库
React Native 使用 realm 数据库 realm 是一款专为移动 端开发的高性能数据库,其宣称自己是最快的 react-native 数据库. realm 整体的优点有这么四点: ...
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- iOS开发数据库篇—SQL
iOS开发数据库篇—SQL 一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查 ...
- iOS开发数据库篇—SQL代码应用示例
iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在 ...
- iOS开发数据库篇—SQLite的应用
iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二 ...
随机推荐
- SQL学习——IN运算符
IN的作用 IN运算符允许您在WHERE子句中指定多个值. IN运算符是多个OR条件的简写. IN的语法 SELECT column_name(s) FROM table_name WHERE col ...
- linux环境下安装python3的方法(转)
Linux 安装python3.7.0 我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 ...
- C# 修改Config文件,增删查改
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/BYH371256/article/det ...
- WPF实战案例-MVVM模式下用附加属性在Xaml中弹出窗体
嗯..最近回家去了,2个月没写过代码了,面试只能吹牛,基础都忘了,今天回顾一下,分享一篇通过附加属性去处理窗体弹出的情况. 或许老司机已经想到了,通过设置附加属性值,值变更的回调函数去处理窗体弹出,是 ...
- set调用add报错:
Map<String, String> goodsStandMap = new HashMap<>();goodsStandMap.put("key1", ...
- Zabbix Web 中文字体显示问题
- 性能分析之TCP全连接队列占满问题分析及优化过程(转载)
前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的. 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候, ...
- php操作kafka
php操作kafka----可以参照网上的安装步骤,先安装ldkafka rdkafka,然乎启动zookeeper和kafka服务器 <?php //$conf = new Rdkafka\P ...
- Redis:Linux环境部署Redis(1)
简介 1.介绍 Redis是开源的(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理.它支持数据结构,例如 字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询的流空间索 ...
- IF语句及代码练习
接着上篇的内容 ㈠ if . . . else . . .语句 ⑴语法 if(条件表达式){ 语句. . . } else { 语句. . . } ...