2012-04-13 40 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) 

私が間違っているのは何を?

EDIT: コード:

- (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

Worked!明らかに私はCoreFoundationをリンクし、MobileCoreServicesはリンクしていません。 –

+2

毎回私を取得します。 – Dex

15

必須スウィフト答え:

import MobileCoreServices 
関連する問題