ios - Swift Decodable 问题 - 无法将值分配给数组

标签 ios json swift decodable

我在解决 self.tvShows = shows.data 上的这个错误时遇到问题

我收到错误消息无法将类型“RecentTvListDays”的值分配给类型“[TvShowDetails]?”

我已将 JSON 结构作为图像附加在底部。希望这就足够了。

class TvHomeController: UICollectionViewController, UICollectionViewDelegateFlowLayout    {

fileprivate let cellId = "cellId"

var tvShows: [TvShowDetails]? = []

func fetchTvItems()   {

    let jsonUrlString = "https://www.what-song.com/api/air-episodes"
    guard let url = URL(string: jsonUrlString) else
    {return}

    URLSession.shared.dataTask(with: url) { (data, response, err) in

        guard let data = data else {return}

        do {

            let shows =  try
                JSONDecoder().decode(RecentTvListData.self, from: data)

            self.tvShows = shows.data

            DispatchQueue.main.async {
                self.collectionView?.reloadData()
            }

        } catch let jsonErr {
            print("Error serializing JSON", jsonErr)
        }

        }.resume()
    }
}

模型

import UIKit

struct RecentTvListData: Decodable  {
var data: RecentTvListDays
}

struct RecentTvListDays: Decodable {
var RecentTvListByDay: [TvShowDetails]
}

struct TvShowDetails: Decodable   {
var _id: Int
var name: String
}

enter image description here

最佳答案

实际上,您似乎快到了。我相信您只需要更改一行:

self.tvShows = shows.data.RecentTvListByDay

就像我在评论中提到的那样,您只是在尝试设置为不同的类型(就像错误所说的那样)。

旁注/提示:始终以小写字母开头变量和属性名称。 (符合约定并提高可读性)。

关于ios - Swift Decodable 问题 - 无法将值分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50055092/

相关文章:

ios - 更改 UICollectionView 中的单元格边框颜色?

ios - Segue 加载下一个屏幕两次

ios - 具有3D旋转的CAEmitterCell

JSON 列表到 Scala 列表

c - 如何使用 premake 构建 jansson?

php - 将 JSON 解码为 PHP 数组,删除相同的条目并编码回 PHP

objective-c - iOS 上的 NSURLConnection 不会尝试缓存大于 50KB 的对象

ios - 使用 CorePlot CPTAxisLabelingPolicyAutomatic 设置显示最大 y 轴

ios - 如何使用 updateHandler 初始化 HKObserverQuery?

ios - SwiftyJson Swift 3 无法访问 JSON 中的字符串