未找到符号: 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];
}

我认为错误是最后一个方法开始的地方,但我不确定。

你的文章没有太多的上下文来解释代码部分; 请更清楚地解释你的场景。

38193 次浏览

查找符号(kUTTypeImage)并找到它应该存在的图像/库(本例中为 MobileCoreServices.framework)。然后将您的二进制文件与该框架连接起来。

强制性迅速回答:

import MobileCoreServices

当与 UIDocumentPickerViewController一起使用时:

import MobileCoreServices


let type = String(kUTTypeImage)
let documentPickerViewController = UIDocumentPickerViewController(documentTypes: [type], in: .import)

对斯威夫特来说

import UniformTypeIdentifiers


let type = String(describing: UTType.image)