Я использую ObjectMapper для заполнения свойств моего объекта Realm из некоторого JSON. Но didSet
, похоже, не вызывается всякий раз, когда свойство remotePath
изменяется с помощью Mapper
.
Вот урезанная версия моего класса (я только что удалил кучу свойств, чтобы быть кратким)
class ImageFile: Object, Mappable {
dynamic var id = 0
dynamic var filename = ""
dynamic var remotepath = "" {
didSet {
self.filename = self.remotepath.isEmpty ? "x" : "z"
}
}
required convenience init?(map: Map) {
self.init()
}
override static func primaryKey() -> String? {
return "id"
}
func mapping(map: Map) {
remotepath <- map[“path"]
}
}
Я вызываю это так:
let file = ImageFile()
file.id = json["fileId"].int
// Map the properties
file.mapping(map: Map(mappingType: .fromJSON, JSON: json.dictionaryObject ?? [:]))
Я пытался поставить точку останова внутри didSet, а также распечатать, чтобы увидеть, срабатывает ли он или нет. Но если я проверю базу данных, я увижу правильное значение внутри свойства remotepath, поэтому оно определенно заполняется. в.
Я знаю, что didSet не сработает во время инициализации, но я сопоставляю после инициализации, поэтому он должен срабатывать? Я проверил проблемы github с ObjectMapper, и люди использовали didSet с ObjectMapper, поэтому я явно что-то упускаю...
Любая помощь приветствуется :)
Примечания:
- Все свойства этого объекта заполняются, кроме
filename
, которое должно быть установлено внутри обратного вызова didSet. - Есть причина, по которой я решил не сопоставлять идентификатор, просто игнорируя это, предоставленный только для ясности.
- Я использовал «x» и «z» в качестве имени файла, чтобы проверить, срабатывает ли он, просто игнорируйте тот факт, что они не имеют смысла, это не проблема.