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语言的) 二 ...
随机推荐
- ARM与x86 CPU架构对比
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是CISC要用最少的机器语言指令 ...
- etcd简单测试类java版
为了方便现场安装完了etcd集群后确认集群是否好用,简单写了个测试类,网上搜的有点乱还有些不能运行,在这里再整理一个能够直接运行的 1.我把etcd的API设成3版本了,调用使用的jetcd,功能挺多 ...
- C# 一个数组集合,任意组合,不遗漏,不重复
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- Hdu 4661 树上拓扑序计数
#include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; ], nxt[MAXM << ...
- centos openjdk
centos openjdk centos openjdk centos openjdk 切换 java jdk
- linux异步传输支持
基于libusbx-1.0.18-rc1,libusbx现已重新merage到libusb.1. 初始化使用libusb_init初始化libusb,如果是单设备通信,ctx参数可以传NULL,表示使 ...
- 登录网站的autohotkey脚本
;如果需要这个软件的代码逻辑,删除敏感信息只需要把上面3行代码删除即可. !:: ;login经过测试必须用ie浏览器,在默认软件里面浏览器设置成ie即可,其他浏览器不让send密码 ;虽然通过程序把 ...
- 方程的解——枚举&&水题
题目 链接 给出方程组:$$\displaystyle \left\{\begin{aligned}11x + 13y + 17z = 2471 \\13x + 17y + 11z = 2739\en ...
- Windows 刷新系统图标缓存
rem 关闭Windows外壳程序explorer taskkill /f /im explorer.exe rem 清理系统图标缓存数据库 attrib -h -s -r "%userpr ...
- nginx静态资源配置(转发)
传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了.这种情况下一般都会需要 ...