CoreData/SQLite/FMDB

iOS Realm数据库的基本用法

2019-01-14  本文已影响0人  iOS小菜鸟一枚

简介

  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 对象模型

#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)
注意:

三、存储 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];

四、删除数据

  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;
}];
上一篇 下一篇

猜你喜欢

热点阅读