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

Get and Set different data types in Swift

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

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

您可以让您的 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)