vendredi 14 août 2015

Error: Missing argument for parameter #1 in call when I am calling a function from different class in Swift

Hey guys I am trying to call applyProcessing()on ViewController class using this method:

@IBAction func intensityChanged(sender: AnyObject) {
        FilteredMainImageOne.applyProcessing()
    }

and suddenly I got an error message "Missing argument for parameter #1 in call"

This is my FilteredMainImageOne class:

class  FilteredMainImageOne {

    var originalImage: UIImage!
    var filteredImage: UIImage?
    var imageQueue: NSOperationQueue?
    var gpuContext: CIContext
    var filter: CIFilter!
    var filterNAme: String
    var homeViewController: ViewController
    weak var delegate: ViewController?

    init(name: String, original: UIImage, queue: NSOperationQueue, context: CIContext, homeVC: ViewController) {
        self.filterNAme = name
        self.originalImage = original
        self.imageQueue = queue
        self.gpuContext = context
        self.homeViewController = homeVC
    }

    func applyProcessing() {
        println("finish picking")
        var imageFilter = CIFilter(name: self.filterNAme)
        let inputKeys = imageFilter.inputKeys() as! [NSString]

        if contains(inputKeys, kCIInputIntensityKey) { filter.setValue(delegate!.intensity.value, forKey: kCIInputIntensityKey) }
        if contains(inputKeys, kCIInputRadiusKey) { filter.setValue(delegate!.intensity.value * 200, forKey: kCIInputRadiusKey) }
        if contains(inputKeys, kCIInputScaleKey) { filter.setValue(delegate!.intensity.value * 10, forKey: kCIInputScaleKey) }
        if contains(inputKeys, kCIInputCenterKey) { filter.setValue(CIVector(x: originalImage.size.width / 2, y: originalImage.size.height / 2), forKey: kCIInputCenterKey) }

        let cgimg = gpuContext.createCGImage(filter.outputImage, fromRect: filter.outputImage.extent())
        let processedImage = UIImage(CGImage: cgimg)

        delegate!.imageView.image = processedImage
    }

    func generateImage (completionHandler: (image: UIImage) -> Void) {

        self.imageQueue?.addOperationWithBlock({ () -> Void in

            var image = CIImage(image: self.originalImage)

            if self.originalImage.imageOrientation == UIImageOrientation.Right {
                image = image.imageByApplyingOrientation(6)
            }

            var imageFilter = CIFilter(name: self.filterNAme)
            imageFilter.setDefaults()
            imageFilter.setValue(image, forKey: kCIInputImageKey)

            var result = imageFilter.valueForKey(kCIOutputImageKey) as! CIImage
            var extent = result.extent()
            var imageRef = self.gpuContext.createCGImage(result, fromRect: extent)
            self.filter = imageFilter
            self.filteredImage = UIImage(CGImage: imageRef)

            UIGraphicsBeginImageContext(self.homeViewController.imageView.image!.size)
            self.filteredImage!.drawInRect(CGRect(origin: self.homeViewController.imageView.bounds.origin, size: self.homeViewController.imageView.image!.size))
            var largeImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()

            NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
                completionHandler(image: self.filteredImage!)
            })

        })
    }
}

What is wrong with my code?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire