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は許さない関数にセットしていたのが問題。

以上