Swift &引用;调用可以抛出,但未标记为';试试';并且错误没有得到处理;

Swift &引用;调用可以抛出,但未标记为';试试';并且错误没有得到处理;,swift,xcode,swifty-json,Swift,Xcode,Swifty Json,我是Swift新手,无法在第行解决此错误: .map { JSON(data: $0) } class func liveInfo()->可观察{ let request=try!URLRequest(url:someURL,方法:.get) 返回会话.rx .数据(请求:请求) .map{JSON(数据:$0)} } SwiftyJSON的JSON(数据:)会引发异常,因此您必须用try标记它 严格的解决方案: .map { (data) in do { retu

我是Swift新手,无法在第行解决此错误:

  .map { JSON(data: $0) }
class func liveInfo()->可观察{
let request=try!URLRequest(url:someURL,方法:.get)
返回会话.rx
.数据(请求:请求)
.map{JSON(数据:$0)}
}
SwiftyJSON的
JSON(数据:)
会引发异常,因此您必须用
try
标记它

严格的解决方案:

.map { (data) in
    do {
        return try JSON(data: data)
    }
    catch {
        fatalError("unable to convert data to JSON")
    }
}
.compactMap { try? JSON(data: $0) }
松散溶液:

.map { (data) in
    do {
        return try JSON(data: data)
    }
    catch {
        fatalError("unable to convert data to JSON")
    }
}
.compactMap { try? JSON(data: $0) }

错误信息非常精确。您的
JSON
初始值设定项可以抛出,但这没有得到处理。当然,其中一个错误将有所帮助。问题已解决!谢谢!我知道我必须用一个做捕捉,但不知何故错过了(数据)in@ada10086您甚至可以执行
.map{try!JSON(数据:$0)}
,但通常只有当您100%确定它不会崩溃时才应该强制展开。然而,在涉及api响应和解析的情况下,我不会使用
try。Docatch是安全编码。安全第一。@ada10086另外,
fatalError
应替换为可接受的回退逻辑,以处理异常情况以防止崩溃。为了可读性,我选择在示例中这样做,以显示其严重性。