我在 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
}

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

最佳答案

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

self.tvShows = shows.data.RecentTvListByDay

就像我在评论中提到的那样,您只是试图将其设置为其他类型(如错误所言,实际上)。

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

09-26 21:13
查看更多