我玩的领域(目前是0.85.0),我的应用程序使用数据库来存储用户特定的数据,如当前用户的联系人。 当用户决定注销时,我需要删除关于用户的每一点信息,而在我看来,最明显,最简单,最干净的事情就是擦除整个领域。 不幸的是,Cocoa lib没有提供这个function。 目前,我坚持以下 RLMRealm *realm = [RLMRealm defaultRealm]; [realm beginWriteTransaction]; [realm deleteObjects:[MyRealmClass1 allObjectsInRealm:realm]]; [realm deleteObjects:[MyRealmClass2 allObjectsInRealm:realm]]; [realm deleteObjects:[MyRealmClass3 allObjectsInRealm:realm]]; [realm commitWriteTransaction]; 任何更好的想法? 谢谢
是否有可能使用一个枚举作为我的模型属性? 我目前有这样的一个类: class Checkin: RLMObject { dynamic var id: Int = 0 dynamic var kind: String = "checked_in" var kindEnum: Kind = .CheckedIn { willSet { self.kind = newValue.rawValue } } enum Kind: String { case CheckedIn = "checked_in" case EnRoute = "en_route" case DroppedOff = "dropped_off" } …. } 它工作正常,但我希望能够有kind属性为Enum,并有Realm自动调用.rawValue属性时,它将存储对象的存储。 这可能在Realm中吗?还是有一个function请求已经在那里?
我们正在将项目转换为使用Realm。 到目前为止,我们留下了深刻的印象,特别是Realm浏览器(非常方便!)。 因此,有几个问题出现了,我们希望在进一步研究之前得到一些具体的使用模式。 我们的应用程序是multithreading(API调用,animation等),因此在阅读问题时请记住,因为我知道Realm实例不能跨线程(当前)访问。 我们应该如何担心重复创buildRealm的实例? 什么是开销? 我们是否应该在ViewControllers或Singletons中保留Realm实例来重复使用? 我们已经尝试过,但有时实例是从不同的线程访问的,所以我们不得不每次都恢复创build一个新的实例。 访问Realm实例上的关系属性时,读取的结果数据是保留在内存中还是每次从磁盘读取? 我们是否担心由于深层关系访问而导致保留的Realm实例变得太大? 什么时候刷新一个Realm实例是必要的? 我注意到,当我在Realm浏览器中进行更改时,它们在不调用刷新的情况下反映在保留的Realm中。 看起来像在每个领域有一个自动刷新属性,根据文档导致这一点。 正在访问Object不良做法的realm属性? 如果使用该对象的函数没有创build对象或领域(当然是在同一个线程上),我们已经用它来写入领域。 例如… func saveStuff(thingToUpdate: Object?) { if let thingToUpdate = thingToUpdate, let realm = thingToUpdate.realm { realm.write { thingToUpdate.name = "lionpants" } } } 提前致谢。 我期待着你的回答。 :d
我刚刚发现领域,并希望更详细地探索它,所以我决定创build示例应用程序,并与它混乱。 到目前为止这么好,但是我还没有能够解决的一件事是如何在Realm浏览器中查看我的数据库。 任何人都可以让我了解如何做到这一点? 任何意见将不胜感激! 提前致谢。
我想要实现的是: class func getSomeObject() -> [SomeObject]? { let objects = Realm().objects(SomeObject) return objects.count > 0 ? objects : nil } 如果返回对象作为[SomeObject]而不是Results ?
我在我的应用程序中使用Realm作为后端。 我创build了一个名为设置的表。 我按照Realm官方网站上给出的步骤在表格中添加了值。 但是当我要从那个表中检索值的时候,我变得exception了 “io.realm.exceptions.RealmMigrationNeededException:必须提供RealmMigration”:“realm = Realm.getInstance(getApplicationContext());”。 实际上,我对android和Realm是新手,所以find麻烦去了解是什么问题。
我已经创build了一个数据库领域,我无法find该文件作为我的操作系统(优胜美地)没有移动文件夹在/私人/变种/手机。 我应该如何访问我的领域在浏览器中运行? 交叉从谷歌组发布
我在扩展的NotificationListenerService上做Realm插入,就像这样: public class NLService extends NotificationListenerService { @Override public void onNotificationPosted(StatusBarNotification sbn) { // building realmObject here mRealm = Realm.getDefaultInstance(); RealmHelper.saveObj(myRealmObject, mRealm); // mRealm.waitForChange(); / mRealm.refresh(); mRealm.close(); } } public class RealmHelper { public static RealmModel saveObj(RealmObject realmObject, Realm realm) { realm.beginTransaction(); RealmObject newRealmObject = realm.copyToRealm(realmObject); realm.commitTransaction(); return newRealmObject; } } 使用比v0.88.3更新的Realm,如果在NLService插入任何内容,则不会调用一个RealmChangeListener ( NLService 。 […]
看起来像我的RealmObject值被RealmProxy类隐藏,但可以从代理类设置。 你可以看到,我的模型非常简单。 public class GroupRealm extends RealmObject { @PrimaryKey public String id; @Index public String name; public String imageUrl; public int order; public GroupRealm parent; public RealmList<GroupRealm> children; public RealmList<ContentRealm> contents; } 这是我如何设置值(数据库是一个有效的领域,并且一切都在提交的事务中): GroupRealm gr = db.where(GroupRealm.class).equalTo("id",g.GroupID).findFirst(); if(gr==null){ gr = db.createObject(GroupRealm.class,g.GroupID); } gr.imageUrl = g.GlyphUrl; gr.name = g.Title; gr.order = g.OrderNum; 下面的图片是当我查询数据库后,我得到的(相同的variables名称不同于代码中的地方) 在我的RealmObjects被定义的项目我的android.library我有必要的插件。 apply plugin: […]