0
我使用ObjectMapper从一些JSON填充我的Realm对象的属性。但似乎并没有调用remotePath
属性由Mapper
更改。Swift ObjectMapper not calling didSet
这里是我的类的下调版本(我刚刚删除了一堆的属性来保持我简洁)
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不会在init期间触发,但是我在init之后映射,所以它应该会触发?我检查GitHub的问题上ObjectMapper和人用didSet与ObjectMapper,所以我显然失去了一些东西......
任何帮助是极大的赞赏:)
注:
- 所有这个对象的属性被填充,除了
filename
之外,它应该被设置在didSet回调中。 - 有一个原因,我选择不映射的ID,只是忽略,只是为了清晰。
- 我已经使用“x”和“z”作为文件名来测试它是否被触发,只是忽略了他们没有任何意义的事实,那不是问题所在。
谢谢Dávid(再次!)。 – TRG