我在我的android应用程序中使用Realm作为数据模块,但是我遇到了一些关于如何为Realm对象分配自定义方法的问题.在iOS coredata模块中,您有NSObjects,它们可以保存到内存中,并且允许在各自的类中进行延展性.我可以使用什么样的系统来解决这个问题?我尝试为我的所有领域对象制作“父类”,但这不起作用.
例如:“TeacherRealm”只包含教师对象的getter和setter,而“TeacherParent”允许用户运行某些算法来查找教师的数据.在TeacherParent类中,我尝试初始化TeacherRealm,在TeacherRealm中,我为TeacherParent对象提供了一个getter和setter.低,看,我的TeacherRealm对象类不支持自定义TeacherParent对象.
有没有人遇到过这个问题/找到了解决方案呢?我知道这听起来很混乱,但如果有必要,我可以提供更多信息
解决方法:
编辑:Realm 0.88.0 has enabled the usage of custom methods,您还可以实现与Realm对象的接口.但我保留了我的存储库模式,这是下面的原始答案.撰写本文时的最新版本为0.88.1.
我坚信数据对象应该只包含数据,逻辑应该是分开的.
@H_502_14@public interface RealmRepository<T extends RealmObject, ID extends Serializable> { T findOne(Realm realm, ID ID); RealmResults<T> findAll(Realm realm); voID insertOrUpdate(Realm realm, T t); voID insertOrUpdate(Realm realm, Collection<T> t); T saveOrUpdate(Realm realm, T t); RealmList<T> saveOrUpdate(Realm realm, RealmList<T> tList); Realmquery<T> query(Realm realm); voID delete(Realm realm, ID ID); voID delete(Realm realm, T t); voID deleteall(Realm realm, RealmResults<T> realmResults); voID deleteEveryObject(Realm realm); long count(Realm realm);}
和
@H_502_14@public abstract class BaseRealmRepositoryImpl<T extends RealmObject, ID extends Serializable> implements RealmRepository<T, ID> { protected Class<T> clazz; public BaseRealmRepositoryImpl(Class<T> clazz) { this.clazz = clazz; } @OverrIDe public RealmResults<T> findAll(Realm realm) { return query().findAll(); } @OverrIDe public voID insertOrUpdate(Realm realm, T t) { realm.insertOrUpdate(t); } @OverrIDe public voID insertOrUpdate(Realm realm, Collection<T> collection) { realm.insertOrUpdate(collection); } @OverrIDe public T saveOrUpdate(Realm realm, T t) { return realm.copyToRealmOrUpdate(t); } @OverrIDe public RealmList<T> saveOrUpdate(Realm realm, RealmList<T> List) { RealmList<T> realmList = new RealmList<>(); for(T t : realm.copyToRealmOrUpdate(List)) { realmList.add(t); } return realmList; } @OverrIDe public Realmquery<T> query(Realm realm) { return realm.where(clazz); } @OverrIDe public voID deleteEveryObject(Realm realm) { realm.delete(clazz); } @OverrIDe public voID delete(Realm realm, T t) { t.deleteFromrealm(); } @OverrIDe public voID deleteall(Realm realm, RealmResults<T> realmResults) { realmResults.deleteallFromrealm(); } @OverrIDe public long count(Realm realm) { return query().count(); }}
和
@H_502_14@public abstract class StringRealmRepositoryImpl<T extends RealmObject> extends BaseRealmRepositoryImpl<T, String> implements RealmRepository<T, String> { public StringRealmRepositoryImpl(Class<T> clazz) { super(clazz); } @OverrIDe public T findOne(Realm realm, String ID) { return query(realm).equalTo(getIDFIEldname(), ID).findFirst(); } @OverrIDe public voID delete(Realm realm, String ID) { delete(realm, findOne(realm, ID)); }}
和
@H_502_14@public class TeacherRealm extends RealmObject { @PrimaryKey private String ID; //getter, setter, etc.}
和
@H_502_14@public class TeacherRepositoryImpl extends StringRealmRepositoryImpl<TeacherRealm> implements TeacherRepository { public TeacherRepositoryImpl() { super(TeacherRealm.class); }}
并且存储库是可扩展的.
总结以上是内存溢出为你收集整理的java – RealmObjects中的自定义方法…解决方案?全部内容,希望文章能够帮你解决java – RealmObjects中的自定义方法…解决方案?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)