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