繁体   English   中英

我在 swift storyboard keyNotFound(CodingKeys(stringValue: "topic", intValue: nil), Swift.DecodingError 中收到此错误

[英]I got this error in swift storyboard keyNotFound(CodingKeys(stringValue: "topic", intValue: nil), Swift.DecodingError

错误:

keyNotFound(CodingKeys(stringValue: "topic", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: "topic", intValue: nil) ("topic" )", underlyingError: nil))

我的代码:

class ViewController: UIViewController {

    @IBOutlet weak var prizeLabel: UILabel!
    @IBOutlet weak var priceLabel: UILabel!
    @IBOutlet weak var timeLabel: UILabel!
    @IBOutlet weak var categoryLabel: UILabel!
    @IBOutlet weak var contentLabel: UILabel!
    @IBOutlet weak var titleLabel: UILabel!
    override func viewDidLoad() {

        
        super.viewDidLoad()
        

           // 1
           let urlString = "http:..{local-host-address}.../post"
           guard let url = URL(string: urlString) else { return }
           
           // 2
           URLSession.shared.dataTask(with: url) { (data, response, error) in
               if error != nil {
                   print(error!)
               }

               guard let data = data else { return }
               do {
                   // 3
                   //Decode data
                   let JSONData = try JSONDecoder().decode(JSONTest.self, from: data)

                   // 4
                   //Get back to the main queue
                   DispatchQueue.main.async {
                      
                       self.timeLabel.text = JSONData.time
                       self.priceLabel.text = JSONData.price
                       self.prizeLabel.text = JSONData.prize
                       self.contentLabel.text = JSONData.content
                       self.categoryLabel.text = JSONData.category
                       self.titleLabel.text = JSONData.topic
                       
                   }

               } catch let jsonError {
                   print(jsonError)
               }
               // 5
               }.resume()
       }
        
    }


    struct JSONTest: Codable {
        var topic: String
        var content: String
        var category: String
        var time: String
        var price: String
        var prize: String
        
        init(topic: String, content: String, category: String, time: String, price: String, prize: String) {
               self.topic = topic
               self.content = content
               self.category = category
               self.time = time
               self.price = price
               self.prize = prize
           }
    }

顺便说一句:我还有另一个类似的代码,但错误不同,但首先我想解决这个问题

谢谢!

在我做了一些更改后,这个问题得到了解决:

最终代码:

override func viewDidLoad() {
        super.viewDidLoad()
        
        if let url = URL(string: "http://{local-host}/post") {
           URLSession.shared.dataTask(with: url) { data, response, error in
        if let data = data {
            let jsonDecoder = JSONDecoder()
            do {
            let parsedJSON = try jsonDecoder.decode(parsingss.self, from: data)
                
                print(parsedJSON)
                    }
            catch {
            print(error)
                        
                    }
                   }
               }.resume()
            }
    }
    struct everything: Codable{
        let topic: String
        let content: String
        let category: String
        let time: String
        let price: String
        let prize: String
    }
    struct parsingss : Codable {
        let scrims: [everything]
    }
}

数据将显示在终端中。

我不知道如何在 label btw 上显示它..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM