2016-12-01 6 views
0

私はObjectMapperを使用しています。そしてmap ["name.label"]のようなkeypathを指定することができますが、私はkeyPathを使用したくないと思います。以下のコードを確認してください。 Author.name?.labelのような名前にアクセスできます。私はLabelDictクラスラベルとして値を設定したときに、私は私がAuthor.nameとして直接Stringを取得した値を取得するにはAuthorクラスのnameプロパティのgetterメソッドとsetterメソッドを設定するにはどうすればよい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"] 
    } 
} 

。私は1つの異なる変数を使用してそれを行うことができますが、同じことをすることは可能ですか?

答えて

1

LabelDictCustomStringConvertibleプロトコルを採用することができます。

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

Iこの印刷物のような値を取得する(作成者:.name?.label) –

+0

すばらしい答えをありがとう... –

関連する問題