2016-05-19 16 views
0

Ich versuche, eine einfache Filter-App zu erstellen, die das angezeigte Bild bei einem Tastendruck filtert.Wert des optionalen Typs 'UIImage?' nicht ausgepackt

@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) 

} 

Ich erhalte die Fehlermeldung:

Value of optional type 'UIImage?' not unwrapped.

Was mache ich falsch hier? Ich bin ein Swift Anfänger.

+3

Sie * müssen * über Optionals lernen, es ist ein Schlüsselkonzept in Swift: https://developer.apple.com/library/ios/ Dokumentation/Swift/Konzept/Swift_Programming_Language/TheBasics.html # // Apple_ref/doc/uid/TP40014097-CH5-ID330 – Moritz

Antwort

1

Ein UIImageView hat nicht immer ein UIImage in seiner Image-Eigenschaft.

sollten Sie überprüfen, vor:

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

Als Eric gesagt, Sie optionals lernen sollten. In diesem Fall sehen wir, wenn wir uns die UIImage init ansehen, dass es nil zurückgeben kann, wenn die Methode fehlschlägt. Als solche müssen Sie die UIImage stellen Sie sicher, erfolgreich erstellt wird

if let myImage = UIImage(CGImage: renderedImage){ 
    photoImageView.image = myImage 
} 
Verwandte Themen