iOS Realm数据库的基本用法

简介

  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;
}];

猜你喜欢

转载自blog.csdn.net/qq_27501365/article/details/86478913