मैं वर्तमान में डेटा "स्ट्रक्चर/मॉडल" में डेटा पार्स करने का प्रयास कर रहा हूं

डेटा मॉडल के लिए कोड:

import Foundation
struct DataModel {
    //MARK: Organizes data structs

    let userId: String
    let Time: String
    let Restaurant: String
    let PartySize: String
    let date: String

}

मैं इसमें डेटा डालता हूं और फिर कोशिश करता हूं और उस डेटा को टेबल व्यू के लिए पुन: प्रयोज्य सेल में फिट करता हूं

पुन: प्रयोज्य सेल के लिए कोड:


class RegistrationCell: UITableViewCell {

    //SetUp xib File
    @IBOutlet weak var PSize: UILabel!
    @IBOutlet weak var Time: UILabel!
    @IBOutlet weak var Date: UILabel!
    @IBOutlet weak var Email: UILabel!
    @IBOutlet weak var Resto: UILabel!

}

एक बार जब मैं डेटा मॉडल से डेटा को सेल में डालने की कोशिश करता हूं तो मुझे मिलता है "थ्रेड 1: घातक त्रुटि: एक वैकल्पिक मूल्य को स्पष्ट रूप से खोलते समय अप्रत्याशित रूप से शून्य पाया गया"

त्रुटि छवि: त्रुटि छवि

पूर्ण कोड:

//  ReservationsViewController.swift
//  MySeat
//
//  Created by Adam Abu Ghaida on 3/16/20.
//  Copyright © 2020 Adam Abu Ghaida. All rights reserved.
//

import UIKit
import FirebaseDatabase

class ReservationsViewController: UIViewController {

    @IBOutlet weak var ReservationTableView: UITableView!

    let DB = Database.database().reference().child("Reservations")

    //var dataArray: [[String]] = []
    var dataArray: [DataModel] = []


    override func viewDidLoad() {
        super.viewDidLoad()
        ReservationTableView.dataSource = self

        ReservationTableView.register(RegistrationCell.self, forCellReuseIdentifier: "Cell")

        LoadData()


    }

    func LoadData(){


        DB.observe(.childAdded) { (snapshot) in


            let snapshotValue = snapshot.value as! Dictionary<String,String>

            let PSize = snapshotValue["PartySize"]!
            let Resto = snapshotValue["Restaurant"]!
            let UID = snapshotValue["Uid"]!
            let Time = snapshotValue["Time"]!
            let Date = snapshotValue["date"]!

            let DBData = DataModel(userId:UID, Time: Time, Restaurant: Resto, PartySize: Resto, date: Date)



            //self.dataArray.append(InfoArray)
            self.dataArray.append(DBData)
            print(self.dataArray)

            self.configTabelView()
            self.ReservationTableView.reloadData()



        }

    }

    func configTabelView() {
        ReservationTableView.rowHeight = UITableView.automaticDimension
    }
}



extension ReservationsViewController: UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let data = dataArray[indexPath.row]

        let cell = ReservationTableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! RegistrationCell

        print("\n\n\n\n\n\n\n\n\(data)\n\n\n\n\n\n\n\n")

        cell.Email.text = data.userId
        cell.PSize.text = data.PartySize
        cell.Resto.text = data.Restaurant
        cell.Date.text = data.date
        cell.Time.text = data.Time

        return cell
    }
}

यही त्रुटियाँ अन्य सभी "cell.xxx.text" कथनों के साथ भी होती हैं

संपादित करें:

इस समस्या को ठीक करने के लिए प्रबंधित, बस self.ReservationTableView.reloadData() को क्लोजर से बाहर ले जाएं।

एक और समस्या: कोशिकाएं अब दिखाई नहीं देती हैं...

0
Adam A. 17 मार्च 2020, 22:19

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपने स्टोरीबोर्ड में अपने सेल को प्रोटोटाइप के रूप में डिज़ाइन किया है, तो इस लाइन को हटा दें:

ReservationTableView.register(RegistrationCell.self, forCellReuseIdentifier: "Cell")

यदि आपने इसे xib फ़ाइल के रूप में डिज़ाइन किया है, तो आपको उस पंक्ति को इसके करीब किसी चीज़ से बदलने की आवश्यकता है:

ReservationTableView.register(UINib(nibName: "RegistrationCell", bundle: nil), forCellReuseIdentifier: "Cell")

एक साइड नोट के रूप में ... उस प्रकार की त्रुटि प्राप्त करते समय जहां आप आश्वस्त हैं, मान वहां होना चाहिए, शेष पंक्ति की जांच करें।

उदाहरण के लिए, यदि आप ऐसा करते हैं:

cell.Email.text = "this is a test"

आपको लगभग निश्चित रूप से वही त्रुटि संदेश मिलेगा। उस समय, आप जानते हैं कि यह आपका डेटा ऑब्जेक्ट नहीं है।

0
DonMag 17 मार्च 2020, 23:22