美文网首页CoreData/SQLite/FMDB
iOS Realm数据库的基本用法

iOS Realm数据库的基本用法

作者: iOS小菜鸟一枚 | 来源:发表于2019-01-14 15:47 被阅读0次

    简介

    1. Realm是由 Y Combinator 公司孵化的一款支持运行在移动设备上的旨在取代 CoreData 和 Sqlite 的嵌入式数据库。它拥有自己的数据库存储引擎,可以高效且快速地完成数据库的构建操作。

    2. Realm可以轻松地移植到项目当中,并且绝大部分常用的增删查改功能,都可以用一行简单的代码轻松完成!目前支持Objective-C、Swift和Java三种语言,也就是说可以在iOS、Android和Mac上面跨平台使用。

    3. 下载地址:https://github.com/realm/realm-cocoa

    一、快速集成 Realm

    1. 如果使用cocoapods,命令语句如下:
    platform :ios, '8.0'
    target 'Simona_Realm' do
    pod 'Realm', '~> 3.0.0-beta.3'
    
    1. 如果使用手动集成,步骤如下:
    • 下载最新的 Realm 更新包,解压zip文件
    • ios/static 目录下面的 Realm.framework 文件拖到项目里面(确保Copy items if needed选中)
    • target -> Build Phases -> Link Binary with Libraries 中添加 libc++.dylib

    二、创建 Realm 对象模型

    • 继承于 RLMObject ,存储在数据库的模型都需要继承于 RLMObject
    #import <Realm/Realm.h>
    
    @interface Friends : RLMObject
    
    @property int groupId;
    @property int frendsId;
    @property NSString *face;
    @property NSString *name;
    @property NSString *desc;
    
    @end
    RLM_ARRAY_TYPE(Friends)
    
    注意:
    • 对象的属性声明,注意请不要带上 nonatomicassignstrong 等这样修饰的词(官方推荐避免引起错误)
    • 定义了 RLM_ARRAY_TYPE(Friends) 表示支持 RLMArray 属性,相当于允许 RLMArray< Friends >属性的使用
    • RLMObject支持 BOOLNSIntegerlongdoubleCGFloatNSStringNSDateNSData等类型的属性

    三、存储 Realm 对象

    • Realm 对象有多种存储方式,以下介绍最常用的两种存储方法:
    1. 第一种方法
    // 初始化realm的数据库对象
    RLMRealm *realm = [RLMRealm defaultRealm];
    // 快速Realm创建对象
    Friends *friend = [[Friends alloc] init];
    friend.name = @"张三";
    friend.face = @"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2107565960,1651633757&fm=26&gp=0.jpg";
    friend.desc = @"这是一个好友签名";
    friend.frendsId = 1;
    friend.groupId = 2;
    // 存储对象
    [realm transactionWithBlock:^{
        [realm addObject:friend];
    }];
    
    1. 第二种方法
    // 初始化realm的数据库对象
    RLMRealm *realm = [RLMRealm defaultRealm];
    // 开启事务
    [realm beginWriteTransaction];
    // 存储对象
    [realm addObject:friend];
    // 提交事务
    [realm commitWriteTransaction];
    

    四、删除数据

    • Realm 有多种存储方式,以下分别介绍 删除单条数据清除一张表数据清除所有数据 的方法:
    1. 删除单条数据
    RLMRealm *realm = [RLMRealm defaultRealm];
    // 获取需要删除的对象
    RLMResults *results = [Friends objectsWhere:@"frendsId = %d",1];
    Friends *friend = results.firstObject;
    // 删除单条数据
    [realm transactionWithBlock:^{
        [realm deleteObject:friend];
    }];
    
    1. 清除一张表数据
    RLMRealm *realm = [RLMRealm defaultRealm];
    RLMResults *results = [Friends allObjects];
    for (Friends *friend in results) {
        [realm transactionWithBlock:^{
            [realm deleteObject:friend];
        }];
    }
    
    1. 清除所有数据
    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm deleteAllObjects];
    

    五、查询数据

    • 查询全部数据
    RLMResults *results = [Friends allObjects];
    
    • 按条件查询
    1. 条件查询
    RLMResults *results = [Friends objectsWhere:@"frendsId > 2"];
    
    1. 按顺序查询
    // ascending:是否按升序排列
    RLMResults *results = [Friends sortedResultsUsingKeyPath:@"frendsId" ascending:YES];
    
    1. 链式查询
    // 查询所有叫 张三 的人,并且按 frendsId 升序排列
    RLMResults *results = [[Friends objectsWhere:@"name = %d",@"张三"] sortedResultsUsingKeyPath:@"frendsId" ascending:YES];
    

    六、更新数据

    RLMRealm *realm = [RLMRealm defaultRealm];
    // 获取需要更新数据的对象
    RLMResults *friends = [Friends objectsWhere:@"frendsId = %d",1];
    Frends *friend = friends.firstObject;
    // 更新数据,更新好友分组
    [realm transactionWithBlock:^{
        friend.groupId = 2;
    }];
    

    相关文章

      网友评论

        本文标题:iOS Realm数据库的基本用法

        本文链接:https://www.haomeiwen.com/subject/mrjddqtx.html