2012-04-13 15 views
69

मैं apple's documentation से कोड के कुछ टुकड़े की नकल की - और मैं इन 2 त्रुटियों मिला:प्रतीक नहीं मिला: 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) 

क्या मैं गलत कर रहा हूँ?

संपादित करें: कोड:

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

मुझे लगता है कि जहां पिछले विधि शुरू होता है त्रुटि है, लेकिन मुझे यकीन नहीं कर रहा हूँ।

आपकी पोस्ट में कोड अनुभागों की व्याख्या करने के लिए अधिक संदर्भ नहीं है; कृपया अपने परिदृश्य को और स्पष्ट रूप से समझाएं।

+0

अपने कोड क्या है? – blake305

+0

मैंने अपनी साइट का संदर्भ दिया है। मैं सवाल अपडेट करूंगा। –

उत्तर

181

प्रतीक (kUTTypeImage) देखें और उस छवि में लाइब्रेरी का पता लगाएं (MobileCoreServices.framework इस मामले में)। फिर उस ढांचे के साथ अपनी बाइनरी को लिंक करें।

+61

हेडर आयात करने के लिए भी मत भूलना GreyHands

+3

काम किया! स्पष्ट रूप से मैंने CoreFoundation को जोड़ा और मोबाइलकोर सेवा नहीं। –

+2

मुझे हर बार मिलता है। – Dex

15

अनिवार्य स्विफ्ट जवाब:

import MobileCoreServices 
संबंधित मुद्दे