2
我想我過濾結構時:錯誤濾波結構
class Song: CustomStringConvertible {
let title: String
let artist: String
init(title: String, artist: String) {
self.title = title
self.artist = artist
}
var description: String {
return "\(title) \(artist)"
}
}
var songs = [
Song(title: "Song Title 3", artist: "Song Author 3"),
Song(title: "Song Title 2", artist: "Song Author 2"),
Song(title: "Song Title 1", artist: "Song Author 1"),
Song(title: "Song Title 0", artist: "Song Author 1")
]
上一個UITableView
dispays:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell: LibrarySongTableViewCell! = tableView.dequeueReusableCell(withIdentifier: "Library Cell") as! LibrarySongTableViewCell
cell.titleLabel = songs[indexPath.row].title
cell.artistLabel = songs[indexPath.row].artist
}
這樣的:
var filteredArtist = songs.filter { song -> Bool in
return song.artist == "Artist Name"
}
但是,我每當我將cellForRowAtindexPath
更改爲
Thread 1: EXC_BAD_INSTRUCTION
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell : LibrarySongTableViewCell! = tableView.dequeueReusableCell(withIdentifier: "Library Cell") as! LibrarySongTableViewCell
cell.titleLabel = filteredArtist[indexPath.row].title
cell.artistLabel = filteredArtist[indexPath.row].artist
}
我該如何解決這個問題?我就在這行錯誤:
cell.titleLabel = filteredArtist[indexPath.row].title
的
tableView:tableView:numberOfRowsInSection
方法最可能的是,你的'的tableView(_:numberOfRowsInSection:)'方法不返回的(過濾!)輸入正確的數字。 –爲了完成過濾,你是否實現了UISearchController?如果沒有,我會建議你閱讀其中一個教程。它可以幫助您更健壯地設計解決方案。 (*我不認爲你想改變你的'cellForRowAt'。通常情況下,新的過濾的tableView被繪製在第一個'*) – AgRizzo