RealmJava-RealmResults或RealmQuery上的批量更新
在Realm ObjC中,可以对RLMResults集合执行如下更新操作:RealmJava-RealmResults或RealmQuery上的批量更新,java,realm,Java,Realm,在Realm ObjC中,可以对RLMResults集合执行如下更新操作: RLMResults<Pubs *> *pubsToDelete = [Pubs objectsWhere: @"NOT (pubId IN %@)", apiIds]; [[RLMRealm defaultRealm] transactionWithBlock:^{ // all pubs in pubsToDelete will be updated [pubsToDelete setVa
RLMResults<Pubs *> *pubsToDelete = [Pubs objectsWhere: @"NOT (pubId IN %@)", apiIds];
[[RLMRealm defaultRealm] transactionWithBlock:^{
// all pubs in pubsToDelete will be updated
[pubsToDelete setValue:@YES forKeyPath:@"deleted"];
}];
RLMResults*pubsToDelete=[Pubs objects此处:@“NOT(pubId IN%@)”,apids];
[[RLMRealm defaultRealm]transactionWithBlock:^{
//pubsToDelete中的所有酒吧都将更新
[pubsToDelete setValue:@YES forKeyPath:@“deleted”];
}];
是否也可以在Java版本中使用,或者我必须对RealmResults执行迭代并为每个对象设置值?像
RealmResults<Pubs> results = query.findAll();
realm.beginTransaction();
for (Pubs p : results) {
p.deleted = 1;
}
realm.commitTransaction();
RealmResults results=query.findAll();
realm.beginTransaction();
对于(酒吧p:结果){
p、 删除=1;
}
realm.commitTransaction();
是的,在Java领域中,您需要迭代所有对象
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmResults<Pubs> results = query.findAll();
for(Pub p : results) {
p.deleted = 1;
}
}
});
realm.executeTransaction(新realm.Transaction(){
@凌驾
公共void执行(领域){
RealmResults results=query.findAll();
对于(Pub p:结果){
p、 删除=1;
}
}
});
我想好了,谢谢。一般来说,realm java似乎比realm objc弱,同样是由于缺少谓词etcYeah,realm java更年轻,必须修复更多系统特定的怪癖(现在通过对象存储集成,他们有更多的怪癖需要修复),但是像这样的批处理更新对于realm java来说非常好,这样内存效率会更高。