Swift nilエラーの修正 (ほとんど読む価値なし)
CoreData保存時に personPhotoにnilが入る。 それでエラーになるため修正。
personPhoto = UIImageJPEGRepresentation(personImageView.image!, 1)
修正後
var personPhoto:Data? = nil if let image = personImageView.image{ personPhoto = UIImageJPEGRepresentation(image, 1) }
オプショナルバインディングを利用 personImageView.imageがnilなら{ }の中が実行されない。
そもそもなぜこのようにするのかというと
UIImageJPEGRepresentationの関数定義を見ると
public func UIImageJPEGRepresentation(_ image: UIImage, _ compressionQuality: CGFloat) -> Data?
引数に?がついていないし、エラーハンドリングもされていない。 つまりこの関数はnilをセットしてはいけないということ。
personImageViewはこのようにメンバで宣言
@IBOutlet weak var personImageView: UIImageView!
personImageViewは画面接続なのでnilの可能性はないが personImageView.image!は、画像登録しないと当然nilになる。
nilになる可能性のあるものを、引数にnilは許さない関数にセットしていたのが問題。
以上