2017-07-16 13 views
2

をフィルタするとき、私は私の構造体をフィルタ処理しようとしている。このようエラー構造体

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 
} 

UITableViewにdispays

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") 
] 

var filteredArtist = songs.filter { song -> Bool in 
    return song.artist == "Artist Name" 
} 

しかし、I 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 
+0

ようtableView:tableView:numberOfRowsInSection方法、あなたの'のtableViewを更新する書き込みを試してみてください。 –

+0

フィルタリングを行うために、UISearchControllerを実装しましたか?そうでない場合は、チュートリアルの1つを読むことをお勧めします。ソリューションをより堅牢に設計するのに役立ちます。 (*私はあなたの 'cellForRowAt'を変更したくないと思っています。最初に新しいフィルタリングされたtableViewが描画されます '*) – AgRizzo

答えて

0

として@Martin R問題は、おそらくあなたのテーブルの行の合計数に関連して、コメントで述べています。 (:numberOfRowsInSection:_) `メソッドは(フィルター!)エントリの正しい数を返しません

この

おそらく
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return filteredArtist.count 
} 
+0

LOL。本当にありがとう!私はその笑を逃したとは信じられません。 –