Ошибка развертывания при подключении представления UITbale к базе данных реального времени firebase - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу получить UITableview для чтения видео из базы данных Firebase.Я подключился к базе данных Firebase.настроить мою базу данных, как показано:

enter image description here

Я создал структуру и связал ее, и у меня есть видео, связанные с ней.Приложение отлично читает заголовок базы данных, но когда я нажимаю на отдельные ячейки, которые ссылаются непосредственно на видео, я получаю ошибку распаковки.

enter image description here

Таким образом, табличное представление заполняется заголовком видео 1 и видео 2, но по какой-то причине эти ячейки не читают ссылку на видеофайл, сохраненный в firebase.

Структура, которую я настроил: enter image description here

Код в viewcontroller.swift:

import UIKit import Firebase import FirebaseDatabase import AVKit import AVFoundation

класс ViewController: UIViewController, UITableViewDelegate, UITableourceDataSata{

 var table = [Videos]()
var ref: DatabaseReference!

@IBOutlet weak var Tableview: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    ref = Database.database().reference().child("videos")
    ref.observe(DataEventType.value, with: {(snapshot) in
        if snapshot.childrenCount > 0 {
            self.table.removeAll()

            for video in snapshot.children.allObjects as! [DataSnapshot] {

                let Object = video.value as? [String: AnyObject]
                let Title =  Object?["Title"]
                let videolink = Object?["link"]

                let video = Videos(Title: Title as? String, link: video as? String)
                self.table.append(video)

                self.Tableview.reloadData()
            }
        }
    })
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = Tableview.dequeueReusableCell(withIdentifier: "cell") as! TableViewCell
    let video: Videos
    video = table[indexPath.row]
    cell.titleLabel.text = video.Title
    return cell 
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let videoURL = URL(string: table[indexPath.row].link!) else {
        return
    }

    let player = AVPlayer(url: videoURL)

    let controller = AVPlayerViewController()
    controller.player = player

    present(controller, animated: true) {
        player.play()
    }   
}
}

Единственное, что у меня есть, это файл TableViewCell.swift:

enter image description here

это довольно простой проект, ноЯ застрял как-то.если кто-то может увидеть, где я иду не так, это было бы здорово.

Спасибо.

1 Ответ

0 голосов
/ 07 февраля 2019

Я думаю, что проблема в этой строке:

let video = Videos(Title: Title as? String, link: video as? String)

Это должно быть:

let video = Videos(Title: Title as? String, link: videolink as? String)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...