Reflection Swift 2反射误差
我已经查看了一段swift代码,尝试创建一个将对象序列化为JSON的反射函数。问题是,当我调用初始值设定项获取反射时,它会抛出一个疯狂的错误Reflection Swift 2反射误差,reflection,swift2,mirror,xcode7.3,Reflection,Swift2,Mirror,Xcode7.3,我已经查看了一段swift代码,尝试创建一个将对象序列化为JSON的反射函数。问题是,当我调用初始值设定项获取反射时,它会抛出一个疯狂的错误 struct Address { var street: String } struct Person { var name: String = "Dre" var age: Int = 33 var dutch: Bool = false var address: Address? = Address(stree
struct Address {
var street: String
}
struct Person {
var name: String = "Dre"
var age: Int = 33
var dutch: Bool = false
var address: Address? = Address(street: "Clark Drive")
}
// Throws an error on the next line
let mirror = Mirror(reflecting: Person)
当我尝试将mirror的值设置为镜像初始化的结果时,会出现以下错误:
你知道这里会出什么问题吗?你需要传递一个
Person
的实例,而不是类Person
。例如:
struct Address {
var street: String
}
struct Person {
var name: String = "Dre"
var age: Int = 33
var dutch: Bool = false
var address: Address? = Address(street: "Clark Drive")
}
let person = Person()
let mirror = Mirror(reflecting: person)
print(mirror.displayStyle)
for case let (label?, value) in mirror.children {
print(label, value)
}
印刷品:
Optional(Struct)
name Dre
age 33
dutch false
address Optional(Address(street: "Clark Drive"))
Mirror for Bookmark
您需要传递
Person
的实例,而不是类Person
。例如:
struct Address {
var street: String
}
struct Person {
var name: String = "Dre"
var age: Int = 33
var dutch: Bool = false
var address: Address? = Address(street: "Clark Drive")
}
let person = Person()
let mirror = Mirror(reflecting: person)
print(mirror.displayStyle)
for case let (label?, value) in mirror.children {
print(label, value)
}
印刷品:
Optional(Struct)
name Dre
age 33
dutch false
address Optional(Address(street: "Clark Drive"))
Mirror for Bookmark
错:
正确:
func jediGreet(name: String, ability: String) -> (farewell: String, mayTheForceBeWithYou: String) {
return ("Good bye, \(name).", " May the \(ability) be with you.")
}
let retValue = jediGreet (name:"old friend",ability: "Force")
print(retValue)
print(retValue.farewell)
print(retValue.mayTheForceBeWithYou)
错:
正确:
func jediGreet(name: String, ability: String) -> (farewell: String, mayTheForceBeWithYou: String) {
return ("Good bye, \(name).", " May the \(ability) be with you.")
}
let retValue = jediGreet (name:"old friend",ability: "Force")
print(retValue)
print(retValue.farewell)
print(retValue.mayTheForceBeWithYou)
我为您更正了格式。现在由你来描述你改变了什么,以及为什么我要为你修改格式。现在由你来描述你改变了什么以及为什么