Uso de identificador não declarado 'kUTTypeMovie'

114

Estou recebendo a mensagem de erro - Uso de identificador não declarado 'kUTTypeMovie'

no código abaixo -

-(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];
}

O que há de errado com isso?

Ashish Agarwal
fonte

Respostas:

291

Você deve adicionar o framework MobileCoreServices ao projeto e, em seguida, importá-lo:

Objetivo C:

#import <MobileCoreServices/MobileCoreServices.h>

Isso fará com que o problema desapareça.

Swift 4:

import MobileCoreServices
O cara
fonte
1
@import MobileCoreServices;- para Objective-C
Ganpat
37

rápido

import MobileCoreServices

objetivo c

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

Sou um novato no desenvolvimento de iOS e xcode e passei algum tempo tentando descobrir porque apenas a importação não estava funcionando. Depois de descobrir o problema com um membro mais experiente da minha equipe, descobri que você não deve apenas incluir

#import <MobileCoreServices/MobileCoreServices.h>

mas você também deve vincular binários à biblioteca da estrutura MobileCoreServices para as fases de construção do seu projeto.

Espero que isto ajude! Eu com certeza precisava dessa informação quando estava fazendo isso.

Josh Lowe
fonte
3

Resposta do Swift 4 , com código de câmera de vídeo e delegado imagePicker:

import MobileCoreServices

Abra a câmera de vídeo

   @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 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
fonte
0
  1. Adicione MobileCoreServices.framework se ainda não tiver sido adicionado. Selecione seu destino e adicione binários vinculados à biblioteca.
  2. Adicionar #import <MobileCoreServices/MobileCoreServices.h>
Ram G.
fonte
0

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

Naqeeb Ahmed
fonte