что на самом деле делает ignoreKotlinNullability? - PullRequest
0 голосов
/ 22 мая 2019

В какой-то момент разработки нашего проекта я добавил раздел в наш gradle:

kapt {
    arguments {
        arg("realm.ignoreKotlinNullability", true)
    }
}

Я вспоминаю, как делал это, чтобы предотвратить сбои во время миграции, и поиск его в Интернете доказал, что это его основное применение.

Но что это на самом деле делает? Я не могу найти никаких официальных документов, чтобы доказать и предположения. Я не уверен, должен ли я удалить это или нет, потому что я не знаю, должен ли я рассматривать это как особенность или какое-то бандитизм, который я применил давным-давно.

Есть ли где-нибудь официальный список флагов и аргументов грейдера RealmDB?

1 Ответ

1 голос
/ 22 мая 2019

Когда вы используете Kotlin, тогда Realm проверяет обнуляемость вашего поля.

Например,

class Blah: RealmObject() {
    var group: Group? = null
}

Тогда группа не получает неявную аннотацию @Required.

Но если вы сделаете

class Blah: RealmObject() {
    var group: Group = Group()
}

Это не сработает, потому что Realm не может гарантировать необнуляемость для единственной ссылки.Таким образом, он выдаст ошибку, которую вы получаете.

Если вы хотите игнорировать это, потому что, например, вы создаете вспомогательное поле, которое избегает возврата нулевого значения

kapt {
  arguments {
    arg("realm.ignoreKotlinNullability", true)
  }
}

В этом случаеRealm не будет пытаться неявно обрабатывать вашу обнуляемость (и отображать обнуляемость Kotlin в поле @Required).Но вы должны использовать это, только если вы действительно знаете, что делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...