मैं वर्तमान में डेटा "स्ट्रक्चर/मॉडल" में डेटा पार्स करने का प्रयास कर रहा हूं
डेटा मॉडल के लिए कोड:
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()
को क्लोजर से बाहर ले जाएं।
एक और समस्या: कोशिकाएं अब दिखाई नहीं देती हैं...
1 उत्तर
यदि आपने स्टोरीबोर्ड में अपने सेल को प्रोटोटाइप के रूप में डिज़ाइन किया है, तो इस लाइन को हटा दें:
ReservationTableView.register(RegistrationCell.self, forCellReuseIdentifier: "Cell")
यदि आपने इसे xib फ़ाइल के रूप में डिज़ाइन किया है, तो आपको उस पंक्ति को इसके करीब किसी चीज़ से बदलने की आवश्यकता है:
ReservationTableView.register(UINib(nibName: "RegistrationCell", bundle: nil), forCellReuseIdentifier: "Cell")
एक साइड नोट के रूप में ... उस प्रकार की त्रुटि प्राप्त करते समय जहां आप आश्वस्त हैं, मान वहां होना चाहिए, शेष पंक्ति की जांच करें।
उदाहरण के लिए, यदि आप ऐसा करते हैं:
cell.Email.text = "this is a test"
आपको लगभग निश्चित रूप से वही त्रुटि संदेश मिलेगा। उस समय, आप जानते हैं कि यह आपका डेटा ऑब्जेक्ट नहीं है।
संबंधित सवाल
नए सवाल
ios
iOS, Apple iPhone, iPod टच और iPad पर चलने वाला मोबाइल ऑपरेटिंग सिस्टम है। IOS प्लेटफॉर्म पर प्रोग्रामिंग से संबंधित प्रश्नों के लिए इस टैग [ios] का उपयोग करें। उन प्रोग्रामिंग भाषाओं के लिए विशिष्ट मुद्दों के लिए संबंधित टैग [उद्देश्य-सी] और [स्विफ्ट] का उपयोग करें।