Tag: 领域

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即使我不能在构造函数中初始化它?

在Kotlin Realm Extention中如何解决“function不属于这个领域的模式的一部分”

我想用Kotlin使用Realm使用这个Kotlin Realm Extention库。 我已经添加mavenCentral()存储库并compile “com.github.vicpinm:krealmextensions:1.2.0″到app.gradle。 当我运行我的应用程序,我得到了这个错误: java.lang.IllegalArgumentException: Feature is not part of the schema for this Realm. Did you added realm-android plugin in your build.gradle java.lang.IllegalArgumentException: Feature is not part of the schema for this Realm. Did you added realm-android plugin in your build.gradle 我试图在app.gradle中添加apply: realm-android ,但它不工作(旁边我认为它应该从库内部调用)。 我还在我的Activity中添加了Realm.init(baseContext) ,因为查询操作需要它。

RealmMigrationNeededException添加RealmList (Kotlin)

我想添加一个原始列表到现有的模型,但我得到一个exception。 注意:这一切都是Kotlin完成的。 这里是模型: open class Foo( @PrimaryKey var id: Int = 0 ) : RealmObject() 现在我想添加下面的字段: var idList: RealmList = RealmList() 这可能是一个空列表,所以我用一个空白的RealmList (它用于非原始列表字段)初始化它。 我的迁移看起来像这样: schema.get(“Foo”) ?.addRealmListField(“idList”, Int::class.java) 运行应用程序时,我得到一个RealmMigrationNeededException : 由于以下错误,迁移是必需的: – 属性’Foo.idList’已经被选中。 我可以通过添加@Required到模型中的新字段来解决这个问题,但我不确定列表是否仍然可以为空/空。 将原始列表添加到模型的正确方法是什么?以及这是什么正确的迁移?