swift领域列表<t>没有填充

时间:2015-08-21 08:58:12

标签: ios iphone swift realm

我在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"]
    }
}

4 个答案:

答案 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 >())
   }
}