Como obter um nome de propriedade e seu valor usando o Swift 2.0 e reflexão?
Dado este modelo:
public class RSS2Feed {
public var channel: RSS2FeedChannel?
public init() {}
}
public class RSS2FeedChannel {
public var title: String?
public var description: String?
public init() {}
}
O que eu precisaria fazer para obter os nomes e valores de propriedades de umRSS2FeedChannel
instância?
Aqui está o que estou tentando:
let feed = RSS2Feed()
feed.channel = RSS2FeedChannel()
feed.channel?.title = "The Channel Title"
let mirror = Mirror(reflecting: feed.channel)
mirror.children.first // ({Some "Some"}, {{Some "The Channel Title...
for (index, value) in mirror.children.enumerate() {
index // 0
value.label // "Some"
value.value // RSS2FeedChannel
}
Por fim, estou tentando criar umDictionary
que corresponde à instância, usando reflexão, mas até agora não consigo obter o nome e os valores das propriedades da instância.
A documentação diz que:
A etiqueta opcional pode ser usada quando apropriado, p. para representar o nome de uma propriedade armazenada ou de um caso de enum ativo e será usado para pesquisa quando Strings forem passadas para o método descendente.
No entanto, eu só recebo uma string "Some".
Além disso, a propriedade value está retornando uma sequência com o TypeRSS2FeedChannel
quando eu esperava que cada filho fosse "Um elemento da estrutura da instância refletida".