【发布时间】:2023-03-30 15:49:01
【问题描述】:
我有一个表格视图,它显示从 Firebase 数据库中提取的歌曲的标题,该数据库包含以下结构:
{
"songs" : {
"key1" : {
"lyrics" : "...",
"title" : "...",
"video" : "..."
}
}
}
如果我将 firebase 数据添加到名为 Song 的类中,那么我想我可以这样做:
var songs = [Song]()
var filteredSongs = [Song]()
let lower = searchBar.text!.lowercaseString
filteredSongs = songs.filter({$0.title.rangeOfString(lower) != nil})
但是,在遵循此问题的解决方案示例之后,我没有成功做到这一点:convert FIRDataSnapshot to custom type
class Song: NSObject {
var title: String
var lyrics: String
var videoUrl: String
let ref: FIRDatabaseReference?
init(title: String, lyrics: String, videoUrl: String) {
self.title = title
self.lyrics = lyrics
self.videoUrl = videoUrl
self.ref = nil
}
init(snapshot: FIRDataSnapshot) {
title = snapshot.value!["title"] as! String
lyrics = snapshot.value!["lyrics"] as! String
videoUrl = snapshot.value!["video"] as! String
ref = snapshot.ref
}
convenience override init() {
self.init(title: "", lyrics: "", videoUrl: "")
}
}
有没有办法在不创建类的情况下添加过滤器?
【问题讨论】:
-
将
filter应用到songs数组后是否出现任何错误? -
你在哪里以及如何声明
lowervar?并分享你Song课堂。 -
@Igor 我刚刚更新了问题以添加
lower -
@triple.s 在尝试实现类
Song并使用它来生成 tableview 之后,我得到了一个fatal error: unexpectedly found nil while unwrapping an Optional value。我什至还没有尝试应用过滤器,因为那太糟糕了。 -
试试
print(filteredSongs)。你得到什么日志?
标签: ios swift uitableview firebase-realtime-database