2012-04-13 25 views
69

skopiowałem kilka bitów kodu z apple's documentation - i mam te 2 błędy:Symbol nie znaleziono: kUTTypeImage

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) 

Co robię źle?

EDIT: Kod:

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

Myślę, że błąd jest gdzie zaczyna się ostatnia metoda, ale nie jestem pewien.

Twój post nie ma wiele kontekstu, aby wyjaśnić sekcje kodu; proszę wyjaśnić swój scenariusz bardziej wyraźnie.

+0

Jaki jest Twój kod? – blake305

+0

Mam odniesienia do ich witryny. Zaktualizuję pytanie. –

Odpowiedz

181

Wyszukaj symbol (kUTTypeImage) i zlokalizuj zdjęcie/bibliotekę, w której powinno istnieć (MobileCoreServices.framework w tym przypadku). Następnie połącz plik binarny z tą strukturą.

+61

Nie zapomnij również zaimportować nagłówka GreyHands

+3

. najwyraźniej połączyłem CoreFoundation, a nie MobileCoreServices. –

+2

Dostaje mnie za każdym razem. – Dex

15

obowiązkowe odpowiedź Swift:

import MobileCoreServices 
Powiązane problemy