Realm数据库的一些见解

2019-10-16  本文已影响0人  我思__故我在

Realm数据库是由美国YCombinator孵化的创业团队历时几年打造的一个专门针对移动平台设计的数据库。开源,集成简单,开发学习成本低,查询效率高。但是,realm不保证线程安全性,这个是使用过程中特别需要注意的点!
为了方便Realm文件的查看,Realm还提供了一个轻量级的数据库查看工具Realm Browser,借助这个工具,开发者可以查看数据库当中的内容,并执行简单的插入和删除操作。Realm Browser可以在App Store中下载安装。

RMObject最常用的:数据写入、数据删除;建议数据库的打开/提交/关闭事务使用block方式,简洁清晰,但是在block内部必须使用弱引用,防止循环引用导致页面无法释放;整个APP最好只创建一个realm数据库,防止多个数据库同时操作引起异常;

//实例化一个RLMRealm类的对象
//根据配置参数获得RLMRealm
+ (nullable instancetype)realmWithConfiguration:(RLMRealmConfiguration *)configuration error:(NSError **)error;

//根据指定持久化文件路径获得RLMRealm
该路径下如果存在数据库就取当前数据库,不存在就创建
+ (instancetype)realmWithPath:(NSString *)path;

//执行写入事务内给定块中包含的操作
- (void)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block;
//执行写入事务内给定块中包含的操作, 如果发生错误,则返回时包含NSError描述问题的对象
- (BOOL)transactionWithBlock:(__attribute__((noescape)) void(^)(void))block error:(NSError **)error;


//添加或更新一个对象
- (void)addObject:(RLMObject *)object;
//将现有对象添加或更新到Realm中, 有则更新没有则插入
这个方法要求该model对象必须有主键Primary
- (void)addOrUpdateObject:(RLMObject *)object;
//添加或更新多个对象
- (void)addObjects:(id<NSFastEnumeration>)objects;
- (void)addOrUpdateObjects:(id<NSFastEnumeration>)objects;


//删除对象
- (void)deleteObject:(RLMObject *)object;
- (void)deleteObjects:(id)array;
- (void)deleteAllObjects;

RMObject:调取所有对象建议用allObjectsInRealm方法,防止多数据库时取值错误;allObjects方法取默认数据库的值;查询条件语法

//在Realm数据库中,获取该RLMObject类的所有对象
+ (RLMResults *)allObjects;

//根据查询条件返回满足条件的所有RLMObject类的对象
+ (RLMResults *)objectsWhere:(NSString *)predicateFormat, ...;

//使用默认Realm中的给定主键检索此对象类型的单个实例
+ (nullable instancetype)objectForPrimaryKey:(nullable id)primaryKey;

//从指定的Realm返回此对象类型的所有对象
+ (nonnull RLMResults *)allObjectsInRealm:(nonnull RLMRealm *)realm;

更详细使用请推荐阅读:
Realm数据库 从入门到“放弃”

上一篇 下一篇

猜你喜欢

热点阅读