การใช้ตัวระบุที่ไม่ได้ประกาศ 'kUTTypeMovie'


114

ฉันได้รับข้อความแสดงข้อผิดพลาด - ใช้ตัวระบุที่ไม่ได้ประกาศ 'kUTTypeMovie'

ในรหัสด้านล่าง -

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

มันผิดอะไร?

คำตอบ:


291

คุณต้องเพิ่มเฟรมเวิร์ก MobileCoreServices ในโปรเจ็กต์จากนั้นนำเข้า:

วัตถุประสงค์ C:

#import <MobileCoreServices/MobileCoreServices.h>

นั่นจะทำให้ปัญหาหมดไป

Swift 4:

import MobileCoreServices

1
@import MobileCoreServices;- สำหรับ Objective-C
Ganpat


20

ฉันเป็นมือใหม่ในการพัฒนา iOS และ xcode และใช้เวลาพอสมควรในการค้นหาว่าทำไมการนำเข้าจึงไม่ทำงาน หลังจากพบปัญหากับสมาชิกที่มีประสบการณ์มากกว่าในทีมของฉันฉันพบว่าไม่เพียง แต่คุณต้องรวม

#import <MobileCoreServices/MobileCoreServices.h>

แต่คุณต้องเชื่อมโยงไบนารีกับไลบรารีของเฟรมเวิร์ก MobileCoreServices กับขั้นตอนการสร้างของโครงการของคุณด้วย

หวังว่านี่จะช่วยได้! ฉันแน่ใจว่าต้องการข้อมูลนี้เมื่อฉันทำสิ่งนี้


3

คำตอบSwift 4พร้อมรหัสกล้องวิดีโอและตัวแทน ImagePicker:

import MobileCoreServices

เปิดกล้องวิดีโอ

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

ตัวแทน 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)
}

0
  1. เพิ่ม MobileCoreServices.framework หากยังไม่ได้เพิ่ม เลือกเป้าหมายของคุณและเพิ่มไบนารีที่เชื่อมโยงกับไลบรารี
  2. เพิ่ม #import <MobileCoreServices/MobileCoreServices.h>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.