2016-05-19 4 views
0

私はボタンを押すと表示された画像をフィルタリングする簡単なフィルタアプリケーションを作成しようとしています。オプションの値 'UIImage?'の値アンラップしていない

@IBAction func applyFilter(sender: AnyObject) { 

    // Create an image to filter 
    let inputImage = CIImage(image: photoImageView.image) 

    // Create a random color to pass to a filter 
    let randomColor = [kCIInputAngleKey: (Double(arc4random_uniform(314))/100)] 

    // Apply a filter to the image 
    let filteredImage = inputImage.imageByApplyingFilter("CIHueAdjust", withInputParameters: randomColor) 

    // Render the filtered image 
    let renderedImage = context.createCGImage(filteredImage, fromRect: filteredImage.extent()) 

    // Reflect the change back in the interface 
    photoImageView.image = UIImage(CGImage: renderedImage) 

} 

私はエラーを取得しておいてください。

Value of optional type 'UIImage?' not unwrapped.

は、私がここで間違って何をしているのですか?私は迅速な初心者です。

+3

あなたは* Optionalsについて学習する必要があり、それはだ*スウィフトの重要な概念:https://developer.apple.com/library/ios/ documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#// apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

答えて

1

UIImageViewは、必ずimageプロパティにUIImageを持つとは限りません。

する前に確認する必要があります:エリックが言ったように

guard let img = photoImageView.image else { return } 
let inputImage = CIImage(image: img) 
0

は、あなたがoptionalsについて学ぶ必要があります。この場合、UIImage initを見ると、メソッドが失敗するとnilを返すことができます。そのように、あなたはUIImageが正常に最初に作成されていることを確認する必要が

if let myImage = UIImage(CGImage: renderedImage){ 
    photoImageView.image = myImage 
} 
関連する問題