Ошибка, если вы пришли из Swift, в основном потому, что подпись:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
Указывает, что параметр data
типа Intent?
имеет тип "Nullable" (необязательно в Swift),Это означает, что вы должны разыменовать Необязательный сначала.
В Kotlin (как в Swift) вы делаете это с пометкой ?
.
if (data?.something)
Означает, что если данные равны нулю или что-то ложно / ноль (в зависимости от ихвведите), тогда if будет не ввести свой блок.
то же самое для:
if (data?.something && data?.somethingElse)
Это не приведет к сбою, если данные равны нулю, и будет проходить только условиеесли оба значения something
и somethingElse
имеют значение true (или ненулевое значение для не примитивов).
Книга, вероятно, ссылается на старую версию Kotlin или плагин Kotlin-Android, где полученное Намерение не является обязательным и поэтому не может быть нулевым.
Всеэто лучше объяснить в главе Nullability * Kotlin :)