Вопрос по ios, objective-c – Символ не найден: kUTTypeImage

70

Я скопировал некоторые фрагменты кода издокументация на яблоко- и я получил эти 2 ошибки:

Undefined symbols for architecture i386:
  "_kUTTypeImage", referenced from:
      -[ImagePicker imagePickerController:didFinishPickingMediaWithInfo:] in ImagePicker.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Что я делаю неправильно?

РЕДАКТИРОВАТЬ: Код:

- (IBAction) showSavedMediaBrowser {
    [self startMediaBrowserFromViewController: self
                                usingDelegate: (id)self];
}

- (BOOL) startMediaBrowserFromViewController: (UIViewController*) controller
                               usingDelegate: (id <UIImagePickerControllerDelegate,
                                               UINavigationControllerDelegate>) delegate {

    if (([UIImagePickerController isSourceTypeAvailable:
          UIImagePickerControllerSourceTypeSavedPhotosAlbum] == NO)
        || (delegate == nil)
        || (controller == nil))
        return NO;

    UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    mediaUI.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

    // Displays saved pictures and movies, if both are available, from the
    // Camera Roll album.
    mediaUI.mediaTypes =
    [UIImagePickerController availableMediaTypesForSourceType:
     UIImagePickerControllerSourceTypeSavedPhotosAlbum];

    // Hides the controls for moving & scaling pictures, or for
    // trimming movies. To instead show the controls, use YES.
    mediaUI.allowsEditing = YES;

    mediaUI.delegate = delegate;

    [controller presentViewController:mediaUI animated:YES completion:nil];
    return YES;
}

- (void) imagePickerController: (UIImagePickerController *) picker
 didFinishPickingMediaWithInfo: (NSDictionary *) info {

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage, *editedImage, *imageToUse;

    // Handle a still image picked from a photo album
    if (CFStringCompare ((__bridge_retained CFStringRef) mediaType, kUTTypeImage, 0)
        == kCFCompareEqualTo) {

        editedImage = (UIImage *) [info objectForKey:
                                   UIImagePickerControllerEditedImage];
        originalImage = (UIImage *) [info objectForKey:
                                     UIImagePickerControllerOriginalImage];

        if (editedImage) {
            imageToUse = editedImage;
        } else {
            imageToUse = originalImage;
        }
        // Do something with imageToUse
    }

    [[picker parentViewController] dismissModalViewControllerAnimated: YES];
}

Я думаю, что ошибка заключается в том, где начинается последний способ, но я не уверен.

Ваш пост не имеет большого контекста для объяснения разделов кода; пожалуйста, объясните ваш сценарий более четко.

Я ссылался на их сайт. Я обновлю вопрос. Lior Pollak
(Это была не ваша ошибка) Я прочитал все документы, которые могу найти наUIImagePickerControllerони говорят об использованииkUT* заmediaTypes, но в своем примере кода они часто просто передают значения из одной функции в массив. Они никогда не используют его в своем коде и не упоминают, что вам нужно его импортировать. benc
Какой у тебя код? blake305

Ваш Ответ

2   ответа
183

kUTTypeImage) и найдите изображение / библиотеку, в которой оно должно быть (MobileCoreServices.framework в этом случае). Затем свяжите ваш бинарный файл с этой структурой.

Получает меня каждый раз.
или поставить @import MobileCoreServices; если вы не хотите импортировать фреймворк и выполнять всю грязную работу
Также не забудьте импортировать заголовок & lt; MobileCoreServices / MobileCoreServices.h & gt;
В Mac OS X для добавления используется CoreServices.framework.
Работал! по-видимому, я связал CoreFoundation, а не MobileCoreServices. Lior Pollak
20

Обязательный Свифт ответ:

import MobileCoreServices

Похожие вопросы