Meine Klasse zu initialisieren, kann aus einer JSON DictionaryMit map() Array Inline von Array von Dictionary (dh ein JSON-Array)
class ChildObject {
required init?(fromDictionary dictionary: [String:Any]) { //init... }
}
Und jetzt war ich ein Array solcher Wörterbücher gegeben initialisiert werden:
// objectDictionaries = [[String:Any]]
Jetzt möchte ich ein Array meiner Klasse inline mit map
initialisieren. Ich initialisiere ein Array innerhalb einer anderen Klasse.
class ParentObject {
var children: [ChildObject]
required init?(fromDictionary aDictionary: [String:Any]) {
guard let childDictionaries = aDictionary["children"] as? [[String:Any]],
let children = childDictionaries.map { ChildObject(fromDictionary: $0) }
else { return nil }
self.children = children
}
}
Aber das kompiliert nicht --- kann mir jemand die richtige Syntax sagen? Ich habe versucht forEach
, aber das hat auch nicht funktioniert.
In einem Spielplatz erhalte ich
- nach guard Erwartet sonst
- Anonymous Schließung Argument nicht in einem Verschluss enthielt
- Erwartete Expression
- Zahnspange Block von Anweisungen in einer nicht verwendeten Schließung
Ihre Syntax ist in Ordnung, Sie müssen mehr Code im Zusammenhang mit 'objectDictionaries' zeigen –
versuchen Sie, indem Sie' init (fromDictionary Wörterbuch: [String: Any]) 'in' init (fromDictionary Wörterbuch: [[String: Any]]) 'bcz json ist eine Reihe von dict. Stellen Sie jetzt sicher, dass Ihre Daten durch Drucken von Werten in der Konsole angezeigt werden. –
Welchen Fehler bekommen Sie?Hat Ihre Init-Methode genau diese Signatur? Ist es möglich, dass Sie einen fehlgeleiteten Initialisierer haben? ('init? (...)'), wenn ja, müssen Sie 'flatMap' verwenden. –