Этот учебник написан в сентябре 2016 года, который довольно устарел.
Раньше считалось, что если у вас есть класс, который подвергается Objective-C, то все его члены подвергаются Objective-C. В Swift 4 вещи, которые не отмечены @objc
, не подвергаются Objective-C, независимо от того, является ли он членом класса @objc
.
Realm должен делать динамические вещи в ваших свойствах, например, KVO. Вот почему dynamic
необходимо. Но dynamic
- это функция, эксклюзивная для вещей, которые выставлены Objective-C, поэтому вам нужно @objc
.
Именно поэтому Realm не может обрабатывать опционы Swift, потому что они не могут быть соединены с Objective-C. Вы должны использовать RealmOptional<T>
.
Короче, просто добавьте @objc
к вашим свойствам, и все будет хорошо.