RealmLess
描述
- Solutions to simplify Realm(ObjC) transactions.(简化 Realm(ObjC) 事务的解决方案)
- 没有
beginWriteTransaction
,没有commitWriteTransaction
,没有__block
。您可以在任何方法中返回。级别嵌套提交的事务不会抛出异常。 - 对于那些不太熟悉 realm 的开发者,使用 realmless 可以避免许多错误。
- 给个 star 帮我积德。
- Swift
CocoaPods
pod 'RealmLess'
Header
#import <RealmLess/Realm--.h>
RealmLess 事务作用域
-
任何
{}
都是一个作用域,这对于本项目非常非常重要,在正常情况下这一般会被遗忘。任何地方书写的
{}
都是作用域,这对于本项目非常重要。在平常这却常常被忽略。 -
无界域事务将在离开当前作用域时提交。
写事务将在离开当前作用域时自动提交。
-
无界域变量
rll_realm
在 Realm-- 作用域中提供,以确保所有操作的可能性。在 Realm-- 作用域中提供了 realm 变量
rll_realm
,以确保所有操作的可能性。 -
在无界域作用域中可以进行嵌套而不会抛出异常,嵌套的作用域将被合并。这解决了大问题。
在无界域作用域中可以嵌套而不会抛出异常,并且嵌套的作用域将被合并。这解决了一个大问题。
基本无界域作用域(写作用域)
@realm_writing_scope
[rll_realm addObject:YourObject];
无界域更新作用域(更新或添加作用域)
@realm_update_scope
[rll_realm addObject:YourObject];
RLLUpdate_obj = YourObject;
无界域添加作用域(添加作用域)
@realm_add_scope
RLLAdd_obj = YourObject;
无界域删除作用域(删除作用域)
@realm_delete_scope
RLLDelete_obj = YourObject;
无界域事务池/作用域池
- 提交池定义确保离开池作用域时提交事务到默认 Realm。在提交池中可以使用变量
realm
(默认 Realm)。 - 提交池确保了离开作用域时将事务提交到默认 Realm。在提交池内可以使用变量
realm
(默认 Realm)。
Realm 写作池
@realm_writing_pool({
[rll_realm addObject:YourObject];
});
RealmLess 更新池
@realm_update_pool({
...
});
RealmLess 添加池
@realm_add_pool({
...
});
RealmLess 删除池
@realm_delete_pool({
...
});
切换 realm 变量(切换 realm 文件)
-
更改当前作用域中的 realm 变量。它将尝试提交之前的交易。
在当前作用域内使用新的 realm 变量,这将提交之前的事务。
@realm_writing_scope
...
@realm_switch(New Realm);
...
嵌套
{ @realm_writing_scope
(第一段事务 / First transaction)
@realm_commit_up // The first transaction takes effect immediately so that the changes can be queried in the second transaction / 第一段事务立即生效从而可以在第二段事务中查询到变更
(第二段事务 / Second transaction)
@realm_commit_up
(第三段事务 / Third transaction)
}
@realm_writing_pool({
(第一段事务 / First transaction)
@realm_commit_up // The first transaction takes effect immediately so that the changes can be queried in the second transaction / 第一段事务立即生效从而可以在第二段事务中查询到变更
(第二段事务 / Second transaction)
});
使用 RealmLess 作用域对象
{
RLLScopeObj(rll);
[rll.realm addObject:obj];
[rll nestedCommit];
[rll.realm addObject:obj];
[rll nestedCommit];
}