Ho diverse classi veloci che sembrano simili come il seguenteCome estrarre i valori digitati facoltativi da Mirror child in Swift?
public class Book {
var title: String?
var date: NSDate?
}
come ci sono diverse classi diverse in cui ho bisogno di accedere alle proprietà, sto usando riflessione a correre attraverso le proprietà della classe:
let myBook = Book()
myBook.title = "Hello"
myBook.date = NSDate()
let mirror = Mirror(reflecting: myBook)
var propsArr = [(key: String?, value: Any)]()
let mirrorChildrenCollection = AnyRandomAccessCollection(mirror.children)!
if mirrorChildrenCollection.count > 0 {
propsArr += mirrorChildrenCollection
}
//iterate through properties
for case let (label?, value) in propsArr {
print (label, value)
if let val = value as? NSDate {
var extractedDate = val
print(extractedDate)
}
else if let val = value as? String {
var extractedTitle = val
print (extractedTitle)
}
}
Ma ho un problema che gli oggetti figlio non vengono estratti in quanto sono di tipo Qualsiasi e le classi internamente opzionali e quindi non rientrano nei miei casi. Se cambio titolo da String? a String, funzionano, ma ho bisogno di usare i tipi opzionali.
Cosa posso modificare nell'implementazione precedente per lasciare il tipo di dati come String? e data? e ancora estrai i valori dallo specchio?