Swift错误修复:条件绑定初始化器需可选类型而非[TenorModel]
修复方案
问题出在if let的使用场景——它是用来解包可选类型的值,但try JSONDecoder().decode(...)成功时返回的是确定的[TenorModel](非可选),失败时会直接抛出错误而非返回nil,所以不能用if let进行绑定。
因为要求必须用try而非try?来捕获错误,正确的做法是用do-catch代码块来处理错误抛出:
do { let tenorReceived = try JSONDecoder().decode([TenorModel].self, from: responseString) // 在这里正常使用解码后的tenorReceived数组 } catch { // 在这里处理解码失败的错误,比如打印错误详情、执行错误逻辑 print("Tenor数据解码失败:\(error.localizedDescription)") }
逻辑说明
do块中执行可能抛出错误的代码(用try调用decode),如果执行成功,就能直接拿到非可选的tenorReceived并使用;- 如果
decode失败,会立即跳转到catch块,你可以在这里根据错误类型做针对性处理,或者统一捕获所有解码错误。
内容的提问来源于stack exchange,提问作者TheGreatCornholio
相关产品推荐
相关产品推荐

