В последнее время, читая документацию 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 объяснить, почему работает приведенный выше код?
Не обновлена ли документация и не устранены ли какие-либо проблемы с использованием ваших собственных назначенных инициализаторов? Или здесь что-то еще, что позволяет этому работать?