在Swift中获取和设置不同的数据类型

时间:2016-12-01 06:46:08

标签: ios swift swift3 objectmapper

我正在使用ObjectMapper。而且我知道我们可以像map [" name.label"]那样指定关键路径,但我现在不想使用keyPath。检查以下代码。我可以访问Author.name?.label等名称。

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作为{{1} }}。我可以通过使用一个不同的变量来实现它,但可以使用相同的吗?

1 个答案:

答案 0 :(得分: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)