【集成 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数据库的使用的更多相关文章

  1. iOS中Realm数据库的基本用法

      原文  http://git.devzeng.com/blog/simple-usage-of-realm-in-ios.html 主题 RealmiOS开发 Realm是由 Y Combinat ...

  2. iOS开发-Realm数据库

    Realm Realm-Object-c,见:https://realm.io/cn/docs/objc/latest/Realm官网:https://realm.io 使用流程 导入头文件#impo ...

  3. 优于CoreData的Realm数据库基础教程

    Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...

  4. Realm数据库的简单介绍和使用

    给大家介绍一个数据库操作的框架Realm,本文主要以iOS 平台的使用场景为例. realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android: ...

  5. 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)

    介绍 realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android. 2014年7月发布.由YCombinator孵化的创业团队历时几年打造,是第 ...

  6. [RN] React Native 使用 realm 数据库

    React Native 使用 realm  数据库 realm 是一款专为移动 ​ 端开发的高性能数据库,其宣称自己是最快的 react-native 数据库. realm 整体的优点有这么四点: ...

  7. iOS开发数据库篇—SQLite简单介绍

    iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...

  8. iOS开发数据库篇—SQL

    iOS开发数据库篇—SQL 一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查 ...

  9. iOS开发数据库篇—SQL代码应用示例

    iOS开发数据库篇—SQL代码应用示例 一.使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在 ...

  10. iOS开发数据库篇—SQLite的应用

    iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二 ...

随机推荐

  1. K2 BPM_携手东航物流,领跑全球航空物流业_全球领先的工作流引擎

    现代物流产业正在世界范围内广泛兴起,物流产业已成为各个国家国民经济发展的动脉和基础产业.随着物流新格局的加速形成,商业竞争的核心要素已经从传统的对资产资源的占有,演化为对资本.人才与技术的争夺,流量. ...

  2. 关于iReport5.6.0无法正常启动或者闪退或者JDK8不兼容的解决方案

    参考网址: https://blog.csdn.net/erlian1992/article/details/76359191?locationNum=6&fps=1 说白了 ,即 jaspe ...

  3. vue项目,子页面刷新404问题

    翻车事故分析: 因需对项目整体优化,调整过程,采用了路由的history模式,本地项目运行,刷新子页面都是OK的. 部署到测试服务器,正常跳转都ok,但刷新子页面就会出现404,请求变成了get,没有 ...

  4. liunx加载JX2410标准配置文件

  5. (二十五)防编译后函数名通过ida查看到

    在使用多个动态库时,两个动态库之间有可能存在相同名称的函数,这样会出现只有第一个函数生效,即所有对该函数的调用都将指向第一个加载的动态库的同名函数中.这样就会很混乱,而且在想改名称也不是很简单的情况下 ...

  6. 07_Hive的基本命令_Insert命令

    1.将查询结果插入Hive表语法结构: 1.1.基本模式插入: INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol ...

  7. JSON 语法 数据格式

    我们先来看下w3cschool对json的定义: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XM ...

  8. enum枚举变量

    如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. 一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是 ...

  9. java.util.Queue

    转载于:https://www.runoob.com/java/data-queue.html 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList ...

  10. PHP实现yii项目转发有哪几种方法?

    header("location: index.php"); 如果header后面有代码, 会执行, 如果不想执行, 则加上exit;或者die();等, 应该可以应用到yii项目 ...