“致命错误:索引超出范围2019-08-30 11:01:35.001667-0400 fmcBeta [58563:3478851]致命错误:索引超出范围”

时间:2019-08-30 14:05:16

标签: swift firebase uitableview firebase-realtime-database

enter image description here Line where err happens我正在使用表视图和Firebase作为数据库创建事件供稿。我正在使用dateformatter,其日期和时间的样式类型为完整,而时间较短,并将其作为一个完美的字符串写入到我的数据库中,它完全按照我的意愿写。

但是,当我尝试从firebase读取数据并将其显示在tableview单元中的textlabel上时,出现以下错误。

错误:

  

“致命错误:索引超出范围   2019-08-30 11:01:35.001667-0400 fmcBeta [58563:3478851]致命错误:索引超出范围”

我自学成才,很快就会发现。

这是我的表格视图单元格:

class EventsTableViewCell: UITableViewCell {
    @IBOutlet weak var eventLocation: UILabel!
    @IBOutlet weak var eventDate: UILabel!
    @IBOutlet weak var eventTitle: UILabel!



    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

这是我的带有表视图协议的viewcontoller:


class EventsViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {



    @IBOutlet weak var tableView: UITableView!

    var eventsRef: DatabaseReference?
    var eventsDatabaseHandle:DatabaseHandle?


    var eventsTitles = [String]()
    var eventTimestamps:[String] = []
    var eventsLocations = [String]()
      eventsRef = Database.database().reference()

        tableView.reloadData()

  tableView.transform = CGAffineTransform(rotationAngle: -CGFloat.pi)

        tableView.delegate = self
        tableView.dataSource = self

    eventsDatabaseHandle = eventsRef?.child("Church Events").observe(.childAdded, with: { (snaphot) in

         let eventPost = snaphot.value as! [String: Any]


       self.eventTimestamps.append(eventPost["eventdate"] as! String)


        self.eventsTitles.append(eventPost["eventtitle"] as! String)

self.eventsLocations.append(eventPost["eventlocation"] as! String)


        self.tableView.reloadData()

        })

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return eventsTitles.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "events") as! EventsTableViewCell

        cell.eventTitle.text! = eventsTitles[indexPath.row]

        cell.eventDate.text! =  eventTimestamps[indexPath.row]

        cell.eventLocation.text! = eventsLocations[indexPath.row]


        cell.transform = CGAffineTransform(rotationAngle: CGFloat.pi)



        return cell
    }

}

这是我将数据写入Firebase的方式

 @IBAction func saveEventsButton(_ sender: Any) {

        let eventsDates = DateFormatter.localizedString(from: eventDateSelector.date, dateStyle: DateFormatter.Style.full, timeStyle: DateFormatter.Style.short) as String

        print(eventsDates.description)

        let eventSaved:[String: Any] = ["eventdate": eventsDates,"eventtitle":eventsTitleTextField.text!,"eventlocation":eventsLocation.text!]

        eventsRef.child("Church Events").childByAutoId().setValue(eventSaved)

        self.dismiss(animated: true, completion: nil)

    }


}

Screen Shot of string in database

0 个答案:

没有答案