Действительно ли удобные инициализаторы необходимы в Realm? - PullRequest
1 голос
/ 22 апреля 2020

В последнее время, читая документацию swift Realm, я наткнулся на этот отрывок :

Пользовательские инициализаторы для подклассов объектов: при создании подклассов объектов модели вы можете иногда Вы хотите добавить свои собственные методы инициализации для дополнительного удобства.

Из-за некоторых существующих ограничений с самоанализом Swift эти методы не могут быть назначены инициализаторами для класса. Вместо этого они должны быть помечены как удобные инициализаторы с использованием ключевого слова Swift с тем же именем

И все же этот код работает безупречно (сокращенно)

@objcMembers
class UserDatabaseEntity: Object {

    dynamic var height: Int = 0
    dynamic var userId: String = ""

    override public class func primaryKey() -> String? {
        return "userId"
    }

    init(user: UserEntityProtocol, userId: String) {
        super.init()
        self.height = user.height
        self.userId = userId
    }

    required init() {}
}

Модель правильно сохранена и извлекается Realm, хотя он указывает свой собственный инициализатор и переопределяет необходимый пустой init. Может ли кто-то с более глубоким пониманием и знанием базовой реализации Realm объяснить, почему работает приведенный выше код?

Не обновлена ​​ли документация и не устранены ли какие-либо проблемы с использованием ваших собственных назначенных инициализаторов? Или здесь что-то еще, что позволяет этому работать?

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