Uso del identificador no declarado 'kUTTypeMovie'

114

Recibo el mensaje de error: uso del identificador no declarado 'kUTTypeMovie'

en el siguiente código -

-(IBAction)selectVideo:(id)sender {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];

    imagePicker.delegate = self;
    [self presentModalViewController:imagePicker animated:YES];
}

¿Qué tiene de malo?

Ashish Agarwal
fuente

Respuestas:

291

Debe agregar el marco MobileCoreServices al proyecto y luego importarlo:

C objetivo:

#import <MobileCoreServices/MobileCoreServices.h>

Eso hará que el problema desaparezca.

Rápido 4:

import MobileCoreServices
El tío
fuente
1
@import MobileCoreServices;- para Objective-C
Ganpat
37

rápido

import MobileCoreServices

C objetivo

#import <MobileCoreServices/MobileCoreServices.h>
budidino
fuente
20

Soy un novato en el desarrollo de iOS y xcode y pasé algún tiempo tratando de averiguar por qué no funcionaba la importación. Después de resolver el problema con un miembro más experimentado de mi equipo, descubrí que no solo debes incluir

#import <MobileCoreServices/MobileCoreServices.h>

pero también debe vincular los binarios a la biblioteca del marco MobileCoreServices a las fases de construcción de su proyecto.

¡Espero que esto ayude! Seguro que necesitaba esta información cuando estaba haciendo esto.

Josh Lowe
fuente
3

Respuesta rápida 4 , con código de cámara de video y delegado de imagePicker:

import MobileCoreServices

Cámara de video abierta

   @IBAction func openVideoCamera(_ sender: Any) {
     if UIImagePickerController.isSourceTypeAvailable(.camera) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
        imagePicker.mediaTypes = [kUTTypeMovie as String]
        imagePicker.videoMaximumDuration = 10 // or whatever you want
        imagePicker.videoQuality = .typeMedium
        imagePicker.allowsEditing = false
        present(imagePicker, animated: true, completion: nil)
    }

Delegado de ImagePicker:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let mediaType = info[UIImagePickerControllerMediaType] as AnyObject

    if mediaType as! String == kUTTypeMovie as String {
            let videoURL = info[UIImagePickerControllerMediaURL] as? URL
            print("VIDEO URL: \(videoURL!)")
    }
    dismiss(animated: true, completion: nil)
}
Frank Eno
fuente
0
  1. Agregue MobileCoreServices.framework si aún no lo ha hecho. Seleccione su objetivo y agregue binarios vinculados con biblioteca.
  2. Añadir #import <MobileCoreServices/MobileCoreServices.h>
Ram G.
fuente
0

import MobileCoreServicespara rápido
@import MobileCoreServices;para el objetivo c

Naqeeb Ahmed
fuente