我使用ObjectMapper从一些JSON填充我的领域对象的属性。但是,每当didSet属性被Mapper更改时,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中放置一个断点,以及一个打印,以查看它是否正在运行,而不是/但如果我检查数据库,我确实在远程路径属性中看到了正确的值,因此它肯定是被填充的。
我知道didSet不会在init期间触发,但是我会在init之后映射,所以它应该会触发吗?我检查了ObjectMapper上的github问题,人们在ObjectMapper上使用了didSet,所以我显然缺少一些东西.
任何帮助都是非常感谢的:)
备注:
filename属性,该属性应该在didSet回调中设置。发布于 2017-08-24 13:10:34
属性观察者不工作在Realm对象上。这是已知的领域限制,因为对象存在于objects运行时(因此是动态修饰符)。有关详细信息,请参阅这 GitHub问题。您可以使用内置在通知中的Realm作为属性观察者的解决方案。
https://stackoverflow.com/questions/45862116
复制相似问题