类“JSONDecoder”要求“CoverImageView”符合“可解码”

问题描述 投票:0回答:0

我知道这个问题在初学者中很常见,但我还是会问:有两个文件,代码超级简单。而且无处不对,但我还是错了。我每次都错了。帮我理解!请!

文件#1

import SwiftUI

struct CoverImageModel: Decodable, Identifiable {
    let id: Int
    let name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }
    
}

文件 #2 中的问题:

import Foundation

extension Bundle {
    func decode (_ file: String) -> [CoverImageModel] {
        //1. Locate JSON file
        guard let url = self.url(forResource: file, withExtension: nil) else {
            fatalError("Failed to locate \(file) in Bundle")
        }
        //2. Create a property for the data
        guard let data = try? Data(contentsOf: url) else {
            fatalError("Failed to load \(file) from Bundle")
        }
        //3. Create a decoder
        let decoder =  JSONDecoder()
        //4. Create a property for the decoder data
        guard let loaded = try? decoder.decode([CoverImageView].self, from: data) else {
            fatalError("Failde to decode \(file) from Bundle")
        }
        //5. Return the ready-to-use data
        return loaded
      
    }
}

所以,问题是协议解码

我尝试阅读 Apple Swift 文档,在 YouTube 上寻找解决方案——我不明白……

swift codable decodable
© www.soinside.com 2019 - 2024. All rights reserved.