Reflection Swift 2反射误差

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

我已经查看了一段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(street: "Clark Drive")
}

// Throws an error on the next line
let mirror = Mirror(reflecting: Person) 
当我尝试将mirror的值设置为镜像初始化的结果时,会出现以下错误:

  • 调用中缺少参数标签“reflecting:”
  • 无法使用元素标签创建单个元素元组

  • 你知道这里会出什么问题吗?

    你需要传递一个
    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)
    

    我为您更正了格式。现在由你来描述你改变了什么,以及为什么我要为你修改格式。现在由你来描述你改变了什么以及为什么