閉じる

realmとビット演算

自分は SQLから入っているんで、こんな事をやりたいわけですよ。(realm java)
public class Item extends RealmObject{
int flags;
};
realm.where(Item.class).EqualTo(“flags&3”, 3).findAll();
が、今のところビット演算はサポートしていないと言うじゃないですか。

考えた末、こんな事に。(idには 1,2,4,8ってな数値が入っている)
public class FlagItem extends RealmObject{
int id;
};
public class Item extends RealmObject{
RealmList flags;
};
realm.where(Item.class).EqualTo(“flags.id”, 1).EqualTo(“flags.id”, 2).findAll();
配列の要素に対して EqualToを書くと配列中のいずれかがマッチすれば OKという風になるらしい。

ちなみに swift realmではこんなコードに。
class FlagItem: Object {
dynamic var id = 0
}

class Item: Object {
let flags = List()
}
realm.objects(Item.self).filter(“any flags.id==%@”, 1).filter(“any flags.id==%@”, 2)
anyが重要。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)