2016-12-01 71 views
0

我正在使用ObjectMapper。我知道我们可以指定像map [“name.label”]这样的keypath,但我不想一会儿使用keyPath。检查下面的代码。我可以访问像Author.name?.label这样的名称。在Swift中获取和设置不同的数据类型

class Author: Mappable { 
    var name: LabelDict? 

    required init?(map: Map) { 
    }   

    func mapping(map: Map) { 
     name <- map["name"] 
    } 
} 

class LabelDict: Mappable { 
    var label: String? 

    required init?(map: Map) { 
    } 

    func mapping(map: Map) { 
     label <- map["label"] 
    } 
} 

如何设置Author类的name属性的getter和setter方法来设置值LabelDict类的标签,当我得到的值,我得到了String直接作为Author.name。我可以通过使用一个不同的变量来做到这一点,但是可以用相同的方法吗?

回答

1

你可以让你的LabelDict采用CustomStringConvertible协议。

class LabelDict: Mappable, CustomStringConvertible { 
    var label: String? 
    var description: String { 
     get { 
      return self.label ?? "" 
     } 
    } 

    required init?(map: Map) { 
    } 

    func mapping(map: Map) { 
     label <- map["label"] 
    } 
} 

然后,你会像这样使用它String(describing: myLabelDictInstance)

- 澄清
要简单地打印label到控制台,您现在可以使用print(Author?.name)。如果你想把它分配给标签,例如,你可以使用someLabel.text = String(describing: Author?.name)

+0

我不明白如何使用字符串(描述:myLabelDictInstance)。 –

+0

我喜欢这个打印的价值(作者?.name?。标签) –

+0

谢谢你的出色答案... –

相关问题