Tag: 领域

如何用copyToRealm插入对象RealmList

我尝试将RealmList对象插入到领域数据库 模型数据类 open class Data : RealmObject() { @SerializedName("Settings") var settings: Settings? = null @SerializedName("Item") var items: RealmList<Items>? = null } fun insert(data: Data) { mRealm.executeTransactionAsync( Realm.Transaction { realm -> val mData = realm.createObject(Data::class.java) mData.settings = data.settings }, Realm.Transaction.OnSuccess { Log.e("setting", "success") } ) } 但它的错误值不是一个有效的管理对象。 然后我从这个链接https://github.com/realm/realm-java/issues/5238找到解决方案 fun insert(data: Data) { mRealm.executeTransactionAsync( Realm.Transaction { realm […]

CapturedTypeConstructor(*)不是RealmModel的子类型

我有以下方法可以得到Realm对象的新键。 我想能够通过类作为参数: private fun getNextKeyForObject(myClass: Class<*>): Int { mRealm?.let { val maxId = it.where(myClass).max("id") if (maxId != null) { return it.where(myClass).max("id").toInt() + 1 } } return 0 } 我得到以下错误: Type parameter bound for E in fun <E : RealmModel!> where(clazz: Class<E!>!): RealmQuery<E!>! is not satisfied: inferred type CapturedTypeConstructor(*) is not a subtype of RealmModel!

用关闭的交易来写Realm Daos

我们已经开始将Realm集成到我们的android项目中,并遇到了一个小问题。 我们已经用“领域”重写了我们的道,例如: public class RealmAuthDao { public static RealmAuthToken getAuthToken() { Realm realm = RealmFactory.getAuthInstance(); RealmAuthToken token = realm.where(RealmAuthToken.class).findFirst(); return token; } 但每隔几分钟就有以下例外 – “不可恢复的错误。在io_realm_internal_SharedGroup.cpp中打开的文件过多” 我们已经意识到,我们需要关闭在应用程序中打开的每个领域实例,所以我们尝试了这个: public class RealmAuthDao { public static RealmAuthToken getAuthToken() { Realm realm = RealmFactory.getAuthInstance(); RealmAuthToken token = realm.where(RealmAuthToken.class).findFirst(); realm.close // close the instance we were using return token; } 但是,当我们这样做的时候,每当我们试图访问我们查询的对象的成员或属性时,它就变成无效的,并抛出下面的异常: […]

无法在RealmObject子类中创建ArrayList

我有一个类是RealmObject的子类,我想创建里面那个类将被反序列化的数组列表,当我开始建设项目编译时出现错误 Error:Type 'java.util.ArrayList<my_package.MessageContainerObject.Test>' of field 'messages' is not supported 这是我的班 open class MessageContainerObject : RealmObject() { @SerializedName("from") var from = "" @SerializedName("messages") var messages = ArrayList<Test>() class Test } 如果我删除父类一切工作正常

境界,findAllSorted和独特

我有这样的一个方法: override fun getStuff(): MutableList<Stuff> = realm.where(Stuff::class.java) .findAllSorted("timeStamp", Sort.DESCENDING) .distinct("otherId") Stuff是东西有一个timeStamp提交。 如果我做: storage.saveStuff(Stuff("a", otherId=1, timeStamp=1)) storage.saveStuff(Stuff("b", otherId=1, timeStamp=2)) storage.saveStuff(Stuff("c", otherId=1, timeStamp=3)) // Other stuff with different otherId 我预计: storage.getStuff()[0].name == "c" 但事实并非如此。 这是a 。 如果我设置Sort.ASCENDING ,我仍然得到a 。 我究竟做错了什么?

领域嵌套对象排序

我有json: { "title": "Title 2", "body": "Body 2", "status_info": { "is_favorite": false, "is_like": false, "like_count": 0 }, "id": "47e7704e-89f1-4d0d-8da1-52a080d56f46" } 和两个领域对象: open class Actuality : RealmObject() { @PrimaryKey lateinit var id: String @SerializedName("status_info") lateinit var statusInfo: StatusInfo … } open class StatusInfo : RealmObject() { @SerializedName("is_like") var isLiked: Boolean = false @SerializedName("is_favorite") var isFavorite: Boolean […]

将生成的值添加到RealmObject

我已经在Realm中创建了一个模型,如下所示: open class Contact() : RealmObject() { @PrimaryKey @Required open var id: String = "" @Required @Index open var firstName: String = "" @Required @Index open var lastName: String = "" @Required @Index open var fullName: String = "" … } 更新对象时如何生成fullName ? 我知道例如在CoreData中,当willSave:_被调用时,你可以改变一个属性。 这将如何为Realm工作? 我试图提供一个getter,但这会打破RealmObject的行为。 谢谢!

Realm插件导致“app:compileInstantrunco​​nfigDebugKotlin”任务失败

我有一个使用realm db gradle插件的项目。 在我加入后,我开始得到instantCompile错误。 我关闭了Android Studio的即时运行,但没有骰子。 Ran ./gradlew clean && ./gradlew assembleDebug –stacktrace ,这是输出。 * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileInstantrunconfigDebugKotlin'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: […]

Kotlin – 如何使外部类只读字段

我在Android上有以下Kotlin类: class ThisApplication: Application() { lateinit var network: INetwork override fun onCreate() { super.onCreate() network = Network() } } 现在,任何外部类都可以通过简单的操作来获得INetwork引用: application.network 但是,这也使得外部类可以覆盖该值: application.network = myNewNetworkReference 我想避免第二个选项。 不幸的是,我不能使字段val因为它的初始化需要在onCreate回调内发生。 我也考虑过把这个领域变成私有的,并通过一个函数来暴露它,像这样: private lateinit var network: INetwork fun getNetwork() = network 但是,调用getNetwork()的人仍然可以为它分配一个新的值,如下所示: application.getNetwork() = myNewNetworkReference 我怎样才能使网络领域只读的外部类? 或者甚至更好,是否有一种方法来使其val即使我不能在构造函数中初始化它?

领域和自动增量行为(Android)

我试图从一个ID作为参考从领域获取数据。 但是,在查询ID时,我发现Realm为所有元素(ID为0)提供了相同的ID。 为什么当我在模型ID上使用@PrimaryKey注解时ID不自动递增? 以下是该模型的缩短课程: public class Child_pages extends RealmObject { @PrimaryKey private int id_cp; private int id; private String day; private int category_id; 而我正在执行的查询是: realm.where(Child_pages.class).equalTo("id_cp",page_id).findFirst()