Swift枚举镜像获取关联值名称

3

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

例如:

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”,我应该如何做?或者使用其他方式(而非Mirror)来获取字符串“version”。


1
我不确定是否可能,因为Swift不区分单元素元组和它们(唯一的)元素。 - Martin R
谢谢,有其他方法可以获取字符串“version”吗?(不使用镜像反射) - user2967434
iOS-(版本: "2.30.11") android-(版本: "2.30.11",构建:101)在Xcode10(Swift4.2)中打印,因此可能是旧版本的错误。 - Fabian
1个回答

0
iOS-(version: "2.30.11") android-(version: "2.30.11", build: 101)会在Xcode10(Swift4.2)中打印,因此这是旧版本的一个错误。

-@Purpose

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

感谢@Purpose。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接