zoukankan      html  css  js  c++  java
  • 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 > 4) {
            for (int i = 4; 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

  • 相关阅读:
    [转载]初学C#之list
    List<>过滤重复的简单方法
    C# List<> 删除
    C# 生成随机字符串
    C#正则表达式之字符替换
    c#中怎么删除一个非空目录
    treeview 点击时选中节点
    教程链接
    iOS 允许后台任务吗?
    Git Add,Git别名等
  • 原文地址:https://www.cnblogs.com/buerjj/p/8592504.html
Copyright © 2011-2022 走看看