2016-12-01 70 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

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

相關問題