Swift &引用;调用可以抛出,但未标记为';试试';并且错误没有得到处理;
我是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
.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
应替换为可接受的回退逻辑,以处理异常情况以防止崩溃。为了可读性,我选择在示例中这样做,以显示其严重性。