Ich bin wirklich nicht sicher, warum die JSON-Analyse einen SIGABRT-Fehler verursacht.Spielplatz Ausführungsfehler: Signal SIGABRT beim Analysieren von JSON Zeichenfolge
class Bug {
enum State {
case open
case closed
}
let state: State
let timestamp: Date
let comment: String
init(state: State, timestamp: Date, comment: String) {
self.state = state
self.timestamp = timestamp
self.comment = comment
}
init(jsonString: String) throws {
let dict = convertToDictionary(from: jsonString)
Ich denke, das ist es, was den Fehler verursacht, aber ich konnte nicht herausfinden, warum:
self.state = dict["state"] as! Bug.State
self.comment = dict["comment"] as! String
self.timestamp = dict["timestamp"] as! Date
}
}
JSON String-Wörterbuch:
func convertToDictionary(from text: String) -> [String: Any] {
guard let data = text.data(using: .utf8) else { return [:] }
let anyResult: Any? = try? JSONSerialization.jsonObject(with: data, options: [])
return anyResult as? [String: Any] ?? [:]
}
enum TimeRange {
case pastDay
case pastWeek
case pastMonth
}
Ok, welche Änderungen sollte ich machen, um das zu lösen? –
Ich würde Ihrer Enumeration einen Konstruktor hinzufügen, der eine Zeichenfolge akzeptiert und einen ordnungsgemäß erstellten Enumerationswert zurückgibt. Dann könntest du sowas wie 'self.state = Bug.State (fromString: dict [" state "])' –
nennen. Ich denke nicht, dass das das Problem ist. Alle drei self.xxx-Anweisungen verursachen diesen Fehler. –