2016-05-13 3 views
0

Я просмотрел быстрый код, чтобы попытаться сделать функцию отражения, которая сериализовала объект в JSON. Беда в том, когда я называю инициализатор, чтобы получить отражение он бросает сумасшедшую ошибкуSwift 2 Ошибка отражения

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) 

Когда я пытаюсь установить значение зеркала в результате инициализации зеркала я получаю следующие ошибки:

  1. Отсутствует метка аргумент «отражает:» в вызове
  2. Невозможно создать одноэлементный кортеж с меткой элемента

Любая идея, что здесь может быть неправильным?

ответ

1

Вам необходимо сдать экземпляр 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 
+0

К сожалению только сейчас, видя это .. Спасибо, что работали. – Dblock247

1

неправильно:

func jediGreet(name: String, ability: String) -> (farewell: String, mayTheForceBeWithYou: String) { 
    return ("Good bye, \(name).", " May the \(ability) be with you.") 
} 

let retValue = jediGreet("old friend", "Force") 
println(retValue) 
println(retValue.farewell) 
println(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) 
+0

Я исправил форматирование для вас. Теперь вам решать, что вы изменили, и _why_ –

 Смежные вопросы

  • Нет связанных вопросов^_^