快速枚举镜像获取关联值名称

标签 swift enums mirror associated-value

我需要获取枚举关联值的名称。

例如:

enum App{
    case iOS(version:String)
    case android(version:String, build:Int)
}
let iosApp = App.iOS(version:"2.30.11")
let androidApp = App.android(version:"2.30.11",build:101)
let iosMirror = Mirror(reflecting: iosApp)
for case let (key?, value) in iosMirror.children {
        print("\(key)-\(value)") //this will print:iOS-2.30.11,missing the value name-"version",the string "version" was I need.
}
let androidMirror = Mirror(reflecting: androidApp)
for case let (key?, value) in androidMirror.children {
        print("\(key)-\(value)") //this will print:android-(version:"2.30.11",build:101)
}

问题:我想从iosMirror获取iosApp的关联值名称"version",怎么办?或使用其他方式(不是镜像)获取​​字符串“版本”。

最佳答案

iOS-(version: "2.30.11") android-(version: "2.30.11", build: 101)gets printed with Xcode10(Swift4.2) so it is a bug from an older version.

-@目的

我在 Xcode 10-beta 6 中测试了这段代码,它打印出 iOS-(version: "2.30.11")。 这个问题解决了。

感谢@Purpose。

关于快速枚举镜像获取关联值名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137995/

相关文章:

git - 如何更新 git clone --mirror?

error-handling - F#HashCode到枚举转换

json - Cosmos/Document Db 客户端忽略枚举的 JsonConverter

ios - Swift - 将数据从 CollectionView 传递到 TableViewController

swift - 在不同文件中读取时如何阻止变量返回默认值

c# - 为什么 'Int32 value__' 显示为枚举成员?

c++ - 如何获取数组第一个元素的镜像?

swift - 如何实例化给定类型的对象

ios - 覆盖 View ,但将输入向下传播到最低 z-index

ios - UITableView 重新加载行在 iOS 11.2 中不自然地抽动 TableView