2012-04-13 12 views
69

ho copiato alcuni pezzi di codice da apple's documentation - e ho avuto questi 2 errori:Simbolo non trovato: 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) 

Che cosa sto facendo di sbagliato?

EDIT: Il codice:

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

Penso che l'errore è dove l'ultimo metodo inizia, ma non sono sicuro.

Il tuo post non ha molto contesto per spiegare le sezioni del codice; per favore spiega più chiaramente il tuo scenario.

+0

Qual è il tuo codice? – blake305

+0

Ho fatto riferimento al loro sito. Aggiornerò la domanda –

risposta

181

Cercare il simbolo (kUTTypeImage) e individuare l'immagine/libreria in cui dovrebbe esistere (MobileCoreServices.framework in questo caso). Quindi collega il tuo binario con quella struttura.

+61

Inoltre, non dimenticare di importare l'intestazione GreyHands

+3

Worked! a quanto pare ho collegato CoreFoundation e non MobileCoreServices. –

+2

Mi ottiene ogni volta. – Dex

15

obbligatorio risposta Swift:

import MobileCoreServices 
Problemi correlati