0
JSON解析がSIGABRTエラーの原因となる理由がわかりません。プレイグラウンド実行エラー:JSON文字列の解析中にSIGABRTシグナルが発生する
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)
は、私は、これはエラーの原因となっているものだと思うが、私は理由を把握できませんでした:
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
}
self.state = dict["state"] as! Bug.State
self.comment = dict["comment"] as! String
self.timestamp = dict["timestamp"] as! Date
}
}
JSON文字列辞書に
これを解決するには、私はどのような変更を加える必要があると思いますか? –
私は、文字列を受け取り、適切に作成されたenum値を返すコンストラクタをenumに追加します。次に、あなたは 'self.state = Bug.State(fromString:dict [" state "])' –
のようなものを呼び出すことができました。 3つのself.xxxステートメントはすべてこのエラーを引き起こします。 –