0
私の次のコードは検索コントローラの一部です。それは問題なく動作しますが、8-10検索した後、私は致命的なエラー(スレッド1:EXC_BAD_INSTRUCTION)が発生した行を次のように:致命的なエラーです。配列のインデックスがindexpath - swiftの範囲外です。
let movie = filteredMovies[indexPath.item]
あなたがこの種の問題を解決する方法をアドバイスしてもらえます。
if (indexPath.item >= 0 || indexPath.item < movie.count) {
// now you can safely use filteredMovies[indexPath.item]
} else {
// print something so you can investigate
}
そしてindexPath.item
がfilteredMovies
の範囲外であるかもしれないなぜあなたは不思議に思うならば、それは他のだ:indexPath.item
が配列filteredMovies
の境界内にあるかどうかをチェックすることができます
extension searchResults: UITableViewDataSource, UITableViewDelegate {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("searchCell", forIndexPath: indexPath) as! searchResultCell
let movie = filteredMovies[indexPath.item]
cell.searchLabel.text = movie.title
let fileUrl = NSURL(string: movie.thumb)!
if let data = NSData(contentsOfURL: fileUrl)
{
cell.searchImage.contentMode = UIViewContentMode.ScaleAspectFit
cell.searchImage.image = UIImage(data: data)
// to make images rounded
cell.searchImage.backgroundColor = UIColor.clearColor()
cell.searchImage.layer.cornerRadius = 15.0
cell.searchImage.clipsToBounds = true
cell.backgroundColor = UIColor.clearColor()
}
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return filteredMovies.count
}
}
クラッシュ時にスタックトレースと配列の内容を表示 – Wain
tableviewをリロードせずに 'filteredMovies'配列に変更していますか? 'filteredMovies'に何が起こっているのか分からないので、ここでしか推測できません。 – Eendje