我在swift中使用带有ObjectMapper的域。我无法填充列表。总是零。这是我的代码:
import RealmSwift
import ObjectMapper
class Person: Object,GtMappable {
dynamic var id = 0
dynamic var name = ""
dynamic var listOfEmployees = List<Employee>()
required init() {
super.init()
}
required init?(_ map:Map) {
super.init()
mapping(map)
}
// Mappable
internal func mapping(map: Map) {
id = map["id"]
name = map["name"]
listOfEmployees <- map["result"]
}
}
答案 0 :(得分:0)
ObjectMapper的设计(具体来说,它依赖于inout
参数)使它与Realm不兼容。有关详细信息,请参阅https://github.com/Hearst-DD/ObjectMapper/issues/31。
答案 1 :(得分:0)
List类型是一种Realm类型,ObjectMapper不支持开箱即用。
其他人通过创建CustomTransform解决了这个问题。这是一个适合您的解决方案: https://gist.github.com/Jerrot/fe233a94c5427a4ec29b
您还可以在此处查看有关此问题的更多讨论: https://github.com/Hearst-DD/ObjectMapper/issues/143
答案 2 :(得分:0)
我已经创建了一个正确修复此问题的运算符。请检查https://gist.github.com/danilValeev/ef29630b61eed510ca135034c444a98a
使用此运算符,您不需要任何其他代码或转换。
noremap <Leader>[ :Ggrep <cword> -- './*' ':!*.js' ':!*.css'<cr>:copen<cr>
答案 3 :(得分:0)
您必须将RealmListTransform应用于映射函数中的列表:
listOfEmployees <- (map["result"], RealmListTransform<Employee >())
在swift 3.0中,您的代码可能更简单:
import RealmSwift
import ObjectMapper
class Person: Object,GtMappable {
dynamic var id = 0
dynamic var name = ""
dynamic var listOfEmployees = List<Employee>()
required convenience init?(map: Map) {
self.init()
}
// Mappable
internal func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
listOfEmployees <- (map["result"], RealmListTransform<Employee >())
}
}