だから、あなたが見ることができるように、オプションの
var procedures: [Procedure]?
として、あなたの手続きを宣言している、あなたが手順
cell.configureWithProcedure(procedure: Procedure)
を受け入れる関数に渡ししようとしている次に、あなたがしようとしていますこのようなインデックスを使用してプロシージャにアクセスする
self.procedures[indexpath.row]
これはエラーとなるself.procedures
はオプションですので、アンラップして追加する必要がありますか?
self.procedures?[indexpath.row]
これは、問題を解決しますが、それの結果はProcedure
正常だがオプションの手順ではありません - >Procedure?
。
だから、Xcodeはあなたので、それをアンラップするためのヒントを与え、あなたのconfigureWithProcedure
開封された手順を発生します。この
(self.procedures?[indexPath.row])!
この操作のように書かれますProcedure
ないProcedure?
の1行を求めるが、私はあなたをお勧めしません。それは危険だから!
演算子を使うので、私はあなたがこの
if let procedure = self.procedures?[indexPath.row] {
cell.configureWithProcedure(procedure: procedure)
}
EDITのように行うことをお勧めします:あなたのCAに
手順は
extension UITableViewCell {
dynamic class func emptyCell() -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: nil)
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
}
}
存在し、この
if let procedure = self.procedures?[indexPath.row] {
cell.configureWithProcedure(procedure: procedure)
} else {
return UITableView.emptyCell()
}
またはより良い使用ガード
guard let procedure = self.procedures?[indexPath.row] else {
return UITableView.emptyCell()
}
cell.configureWithProcedure(procedure: procedure)
が私の答えはあなたを助けることを願ってのようにそれを書きされていない場合、SEあなたは空のセルを返すことができます。 !
ほとんどの場合、括弧を安全に削除することができます –