最近在我的应用程序中,我一直在使用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)
}
}
答案 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
。