给定这个模型:
public class RSS2Feed {
public var channel: RSS2FeedChannel?
public init() {}
}
public class RSS2FeedChannel {
public var title: String?
public var description: String?
public init() {}
}
我需要如何获取 RSS2FeedChannel
实例的属性名和属性值?
这是我尝试的代码:
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
}
最终,我正在尝试使用反射创建一个与实例匹配的Dictionary
,但是到目前为止,我无法获取实例的属性名称和值。
文档说:
当适当时,可以使用可选标签,例如表示存储属性或活动枚举案例的名称,并将用于在传递给后代方法的字符串时进行查找。
然而,我只得到了一个“Some”字符串。
此外,value属性返回一个带有类型为RSS2FeedChannel
的字符串,而我期望每个子元素都是“反射实例结构的一个元素”!
nil
。请参阅https://dev59.com/a43da4cB1Zd3GeqP3Kow。 - Chris Prince