将WebView与Firebase数据库一起使用

时间:2018-07-09 22:16:20

标签: ios swift firebase-realtime-database uiwebview

最近在我的应用程序中,我一直在使用Firebase存储有关我的应用程序的信息,并且运行良好。现在,我使用它来流式传输视频,并在表视图中使用网络视图来显示Youtube视频。尝试将WebView链接到数据库时,出现错误消息:

  

“视频”类型没有下标成员

这是什么原因造成的?

代码如下:

import UIKit

import Firebase

class videoController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var ref = DatabaseReference()
    var video = [UIWebView]()
    var databaseHandle:DatabaseHandle = 0

    @IBOutlet var videoController: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        ref = Database.database().reference()

        databaseHandle = ref.child("Videos").observe(.childAdded) { (snapshot) in
            let post = snapshot.value as? UIWebView
            if let actualPost = post {
                self.video.append(actualPost)
                self.videoController.reloadData()
            }
        }
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let video = tableView.dequeueReusableCell(withIdentifier: "video") as! video
        video.videos.allowsInlineMediaPlayback = video[indexPath.row]

        return(video)
    }
}

1 个答案:

答案 0 :(得分:0)

此行:

let video = tableView.dequeueReusableCell(withIdentifier: "video") as! video

是您的问题。这将创建一个名为video的新局部变量,并隐藏您的video数组属性。更改为:

let videoCell = tableView.dequeueReusableCell(withIdentifier: "video") as! video

这是整个方法:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let videoCell = tableView.dequeueReusableCell(withIdentifier: "video") as! video
    videoCell.videos.allowsInlineMediaPlayback = video[indexPath.row]

    return videoCell
}

但是最重要的是,为什么要有一系列的Web视图?您当然不会从Firebase获取Web视图。

请修正您的命名约定。类,结构和枚举名称应以大写字母开头。变量,函数和大小写名称以小写字母开头。并使用描述性名称。简单地命名video会混淆所有内容。

然后将您的video数组更改为videos