Swift 返回nil的镜像变量

Swift 返回nil的镜像变量,swift,Swift,这是预期的工作 struct ProgrammingLanguage { let name: String? } let language = ProgrammingLanguage(name: "Swift") let mirror = Mirror(reflecting: language.name) print(mirror.children.first?.value) // Optional("Swift") 卸下选装件时,它会打印一个nil struct Programmi

这是预期的工作

struct ProgrammingLanguage {
    let name: String?
}
let language = ProgrammingLanguage(name: "Swift")
let mirror = Mirror(reflecting: language.name)
print(mirror.children.first?.value)

// Optional("Swift")
卸下选装件时,它会打印一个nil

struct ProgrammingLanguage {
    let name: String
}
let language = ProgrammingLanguage(name: "Swift")
let mirror = Mirror(reflecting: language.name)
print(mirror.children.first?.value)

// nil
有人能解释为什么optionals存在一个值,否则它是一个nil吗?

试试这个

struct ProgrammingLanguage {
    let name: String
}
let language = ProgrammingLanguage(name: "Swift")
let mirror = Mirror(reflecting: language)
for (name, value) in mirror.children {
    guard let name = name else { continue }
    print("\(name): \(type(of: value)) = '\(value)'")
}
试试这个

struct ProgrammingLanguage {
    let name: String
}
let language = ProgrammingLanguage(name: "Swift")
let mirror = Mirror(reflecting: language)
for (name, value) in mirror.children {
    guard let name = name else { continue }
    print("\(name): \(type(of: value)) = '\(value)'")
}
引用一下,
Mirror
是:

任何类型实例的子结构和显示样式的表示

问题是
String
没有子结构,因此它没有子结构。要使用
Mirror
检查其值,必须使用
ProgrammingLanguage
子项

它适用于可选的
字符串
,因为可以检查
可选的
本身,它的唯一子项是它的关联值。

引用,
镜像
是:

任何类型实例的子结构和显示样式的表示

问题是
String
没有子结构,因此它没有子结构。要使用
Mirror
检查其值,必须使用
ProgrammingLanguage
子项


它适用于可选的
字符串
,因为可以检查
可选的
本身,它的唯一子项是它的关联值。

您阅读了问题吗
当移除可选选项时,它会打印出一个nil
???你试过这个吗@维克多Kucera@SuganyaMarlin我很好奇字符串变量的反映,而不是对象本身。你读过这个问题吗
当移除可选选项时,它会打印出一个nil
???你试过这个吗@维克多Kucera@SuganyaMarlin我很好奇String变量的反映,而不是对象本身。将
let name:String
更改为
var name:String可选项是枚举,其子项是其关联值。非可选字符串没有子项。您必须通过ProgrammingLanguage mirror的子级获取值。@Sulthan我看到了,但是
打印(mirror.children)
输出一些集合。当字符串没有子项时,情况如何?@ViktorKucera一个空集合。@Sulthan你说得对。请回答,我会接受的。谢谢将
let name:String
更改为
var name:String可选项是枚举,其子项是其关联值。非可选字符串没有子项。您必须通过ProgrammingLanguage mirror的子级获取值。@Sulthan我看到了,但是
打印(mirror.children)
输出一些集合。当字符串没有子项时,情况如何?@ViktorKucera一个空集合。@Sulthan你说得对。请回答,我会接受的。谢谢