0
我真的不确定为什么JSON解析会导致SIGABRT错误。Playground执行错误:解析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)
我认为这是什么原因造成的错误,但我无法找出原因:
self.state = dict["state"] as! Bug.State
self.comment = dict["comment"] as! String
self.timestamp = dict["timestamp"] as! Date
}
}
JSON字符串词典:
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 = Bug.State(fromString:dict [“state”])' –
虽然我不认为这是个问题。所有这三个self.xxx语句都会导致此错误。 –