2012-04-13 43 views
69

he copiado algunas partes de código de apple's documentation - y me dieron estos 2 errores:Símbolo no encontrado: 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) 

¿qué estoy haciendo mal?

EDIT: El código:

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

creo que el error es donde comienza el último método, pero no estoy seguro.

Tu publicación no tiene mucho contexto para explicar las secciones de códigos; por favor explique su escenario más claramente.

+0

¿Cuál es el código? – blake305

+0

He hecho referencia a su sitio. Actualizaré la pregunta. –

Respuesta

181

Busque el símbolo (kUTTypeImage) y ubique la imagen/biblioteca en la que debería existir (MobileCoreServices.framework en este caso). Luego vincula tu binario con ese marco.

+61

Además, no olvide importar el encabezado GreyHands

+3

¡Funcionó! al parecer, vinculé el CoreFoundation y no los MobileCoreServices. –

+2

Me consigue todo el tiempo. – Dex

15

obligatorio respuesta Swift:

import MobileCoreServices 
Cuestiones relacionadas