Xcode报错:For-in loop requires ‘CryptoDTO’ to conform to ‘Sequence’
Xcode报错:For-in loop requires ‘CryptoDTO’ to conform to ‘Sequence’

Xcode报错:For-in loop requires ‘CryptoDTO’ to conform to ‘Sequence’

在SwiftUI中,使用For-in循环遍历JSONDecoder解码的数组时,发现报错:

do {
    let decoded = try decoder.decode(CryptoDTO.self, from: data)
    for coin in decoded {   // 报错行
        print("加密外币:\(coin)")
    }
    print("成功解码")
} catch {
    print("解码报错")
}

报错内容为:

For-in loop requires 'CryptoDTO' to conform to 'Sequence'

我以为解码的结构需要遵循Sequence协议

后面检查代码的时候,发现因为我尝试对一个不是数组或可迭代对象的东西使用 For-in 循环。

for coin in decoded {
    print("加密外币:\(coin)")
}

For-in循环中的decoded类型不是数组,而是CryptoDTO 单个对象。

因此,解决方案为:

let decoded = try JSONDecoder().decode([CryptoDTO].self, from: data)

将JSONDecoder解码为[CryptoDTO].self数组类型后,For-in循环的decoded就是数组类型,符合Sequence协议。

问题得到解决。

相关文章

Swift遍历有序集合协议Sequence:https://fangjunyu.com/2024/12/10/swift%e9%81%8d%e5%8e%86%e6%9c%89%e5%ba%8f%e9%9b%86%e5%90%88%e5%8d%8f%e8%ae%aesequence/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注