No se puede lanzar UIImage en la rápida extensión de iOS 8

Tengo un problema extraño, estoy tratando de construir una extensión de acción que escanee el código de barras de la imagen provista. Aquí está el código.

override func viewDidLoad() {
    super.viewDidLoad()

    // Get the item[s] we're handling from the extension context.

    // For example, look for an image and place it into an image view.
    // Replace this with something appropriate for the type[s] your extension supports.
    var imageFound = false
    for item: AnyObject in self.extensionContext!.inputItems {
        let inputItem = item as NSExtensionItem
        for provider: AnyObject in inputItem.attachments! {
            let itemProvider = provider as NSItemProvider
            if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeImage as NSString) {
                // This is an image. We'll load it, then place it in our image view.
                weak var weakImageView = self.imageView
                itemProvider.loadItemForTypeIdentifier(kUTTypeImage as NSString, options: nil, completionHandler: { (image, error) in
                    if image != nil {
                        dispatch_async(dispatch_get_main_queue(),{
                            if let imageView = weakImageView {
                                var imageToSet: UIImage? = image as? UIImage
                                imageView.image = image as? UIImage
                            }

                            self.imageToScan = self.imageView.image
                            self.scanFromImage(self.imageToScan!)
                        })
                    }
                })

                imageFound = true
                break
            }
        }

        if (imageFound) {
            // We only handle one image, so stop looking for more.
            break
        }
    }
}

Ahora, cada vez que trato de obtener UIImage siempre obtengo nil, mientras que en la imagen puedo ver que se recibe una imagen. Pero cuando trato de obtener UIImage de esa imagen siempre devuelve nulo. Aquí está la captura de pantalla de la depuración que podría ayudar

Actualización: Aquí está la descripción de la imagen que se recibe como:

Descripción de la impresión de la imagen: (NSSecureCoding!) Image = (instance_type = Builtin.RawPointer = 0x15d674c0 -> 0x32b6be5c (void *) 0x32b6be70: NSURL)

He creado la misma extensión usando el objetivo C y funciona, pero no de manera rápida. Aquí está el Código objetivo C:

- (void)viewDidLoad {
[super viewDidLoad];

// Get the item[s] we're handling from the extension context.

// For example, look for an image and place it into an image view.
// Replace this with something appropriate for the type[s] your extension supports.
BOOL imageFound = NO;
for (NSExtensionItem *item in self.extensionContext.inputItems) {
    for (NSItemProvider *itemProvider in item.attachments) {
        if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
            // This is an image. We'll load it, then place it in our image view.
            __weak UIImageView *imageView = self.imageView;
            [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(UIImage *image, NSError *error) {
                if(image) {
                     dispatch_async(dispatch_get_main_queue(), ^{
                        [imageView setImage:image];
                        imageToScan = image;
                        [self scanImage:imageToScan];
                    });
                }
            }];

            imageFound = YES;
            break;
        }
    }

    if (imageFound) {
        // We only handle one image, so stop looking for more.
        break;
    }
}

}

Intento buscar mucho en Google pero no encontré nada. Incluso probé un código cambiado pero no funciona, aquí está el código cambiado:

                    itemProvider.loadItemForTypeIdentifier(kUTTypeImage as NSString, options: nil, completionHandler: { (image, error) in
                    if image != nil {
                        NSOperationQueue.mainQueue().addOperationWithBlock {
                            if let imageView = weakImageView {
                                var imageToSet: UIImage? = image as? UIImage
                                imageView.image = image as? UIImage
                            }

                            self.imageToScan = self.imageView.image
                            self.scanFromImage(self.imageToScan)
                        }
                    }
                })

Actualización: he notado una cosa; si creo un nuevo proyecto y le agrego una extensión de acción, el mismo código se genera automáticamente, excepto algunas líneas que agregué en el bloque. En eso también, sin siquiera cambiar una sola línea de código generado automáticamente, el imageView.image es nulo. ¿Es esto un error en Swift? O algún error con mi aplicación Xcode.

Respuestas a la pregunta(3)

Su respuesta a la pregunta