2017-07-15 9 views
-1

UIViewControllerUISearchBarUITableViewです。検索バーに何かを入力すると、その文字列がTableViewCellに表示されます。 TableViewCellに.xibを使用するまではうまくいきました。検索バーにテキストを入力して[検索]を押すと、アプリケーションがクラッシュするようになりました。コンソールは、読み取ります。Swift 3 - UITableViewCellは、クラッシュの原因となるキャッチされていない例外

がキャッチされない例外により 'NSUnknownKeyException'、 理由にアプリを終了: '[UITableViewCellの0x7f8456800c00のsetValue:forUndefinedKeyは:]: このクラスは、キー値コーディング準拠のキー artistNameLabelのためではありません。'ここで

.xibである:ここでは

import UIKit 

class SearchResultCell: UITableViewCell { 

@IBOutlet weak var nameLabel: UILabel! 
@IBOutlet weak var artistNameLabel: UILabel! 
@IBOutlet weak var artworkImageView: UIImageView! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

} 

は、関連のViewControllerコードです:

extension SearchViewController: UITableViewDataSource { 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if !hasSearched { 
     return 0 
    } else if searchResults.count == 0 { 
     return 1 
    } else { 
     return searchResults.count 
    } 
} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    if searchResults.count == 0 { 
     return tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifiers.nothingFoundCell, for: indexPath) 
    } else { 
     let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifiers.searchResultCell, for: indexPath) as! SearchResultCell 
     let searchResult = searchResults[indexPath.row] 
     cell.nameLabel.text = searchResult.name 
     cell.artistNameLabel.text = searchResult.artistName 
     return cell 
    } 
} 
} 
+0

私は予備的な答えを提供していますが、実際にしている場合あなたの状況は、実際にはもっと複雑かもしれおそらく複数のテーブルビューで使用するために自分のxibにあなたの細胞を分離する?必要な作業がすべて完了したことを確認するには、[この回答を検討する](https://stackoverflow.com/a/37316669/5099014)を参照してください。 –

答えて

0

これは、ほとんどの場合、ストーリーボードまたはXIBで "切断" 出口接続によって引き起こされます。あなたの場合は、テーブルビューのセルのクラスをSearchResultCellに設定する必要があるからです。私は「ので、あなたのエラーメッセージが

を出力する必要があることを言う[SearchResultCell 0x7f8456800c00のsetValue:forUndefinedKeyは:]:

関連する問題