Home > OS >  swift error: Value of type _ has no member _
swift error: Value of type _ has no member _

Time:03-01

how do I fix this error? xcodes-13

This Is my code for working with api:

struct everything: Codable{
        let topic: String
        let content: String
        let catagory: String
        let time: String
        let price: String
        let prize: String
    }    
    struct parsingss : Codable {
        let scrims: [everything]
    }
    
    @IBOutlet weak var prizeLabel: UILabel!
    @IBOutlet weak var priceLabel: UILabel!
    @IBOutlet weak var timeLabel: UILabel!
    @IBOutlet weak var catagoryLabel: UILabel!
    @IBOutlet weak var ContentLabel: UILabel!
    @IBOutlet weak var TopicLabel: UILabel!
    

    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)
                
                DispatchQueue.main.async {

                    self.TopicLabel.text = parsedJSON.topic
                    self.ContentLabel.text = parsedJSON.content
                    self.catagoryLabel.text = parsedJSON.catagory
                    self.timeLabel.text = parsedJSON.time
                    self.priceLabel.text = parsedJSON.price
                    self.prizeLabel.text = parsedJSON.prize
                    
                   }
                    }
            catch {
            print(error)
                        
                    }
                   }
               }.resume()
            }
    }
}

"error : Value of type 'testViewController.parsingss' has no member 'topic'"

Reply with some codes would be better either ways. Thanks developers.

Without "trying to print in label", the result does come to the output. it is in an array:

[ scrims: {
        "topic": "tv",
        "content": "done",
        "catagory": "gg",
        "time": "10pm",
        "price": "Rs.100",
        "prize": "Rs.1000",
        "id": 1
    },
    {
        "topic": "1",
        "content": "d1",
        "catagory": "g1",
        "time": "10pm",
        "price": "Rs.11",
        "prize": "R1",
        "id": 2
    } ]

Thanks!

CodePudding user response:

You are trying to assign the subscript values from an array object without specifying the index.

Try this:

class ViewController: UIViewController {
@IBOutlet weak var prizeLabel: UILabel!
@IBOutlet weak var priceLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var catagoryLabel: UILabel!
@IBOutlet weak var ContentLabel: UILabel!
@IBOutlet weak var TopicLabel: UILabel!


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 {
                do {
                    let parsedJSON = try JSONDecoder().decode(parsingss.self, from: data)
                    
                    print(parsedJSON)
                    
                    DispatchQueue.main.async {
                        self.TopicLabel.text = parsedJSON.scrims[0].topic
                        self.ContentLabel.text = parsedJSON.scrims[0].content
                        self.catagoryLabel.text = parsedJSON.scrims[0].catagory
                        self.timeLabel.text = parsedJSON.scrims[0].time
                        self.priceLabel.text = parsedJSON.scrims[0].price
                        self.prizeLabel.text = parsedJSON.scrims[0].prize
                    }
                }
                catch {
                    print(error)
                    
                }
            }
        }.resume()
    }
}

}

  • Related