Ios 未找到符号:kUTTypeImage
我从中复制了一些代码,我得到了以下两个错误:Ios 未找到符号:kUTTypeImage,ios,objective-c,linker-errors,mobilecoreservices,Ios,Objective C,Linker Errors,Mobilecoreservices,我从中复制了一些代码,我得到了以下两个错误: Undefined symbols for architecture i386: "_kUTTypeImage", referenced from: -[ImagePicker imagePickerController:didFinishPickingMediaWithInfo:] in ImagePicker.o ld: symbol(s) not found for architecture i386 clang: error:
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];
}
-(iAction)显示SavedMediaBrowser{
[自启动MediaBrowserFromViewController:自启动
使用委托:(id)self];
}
-(BOOL)startMediaBrowserFromViewController:(UIViewController*)控制器
usingDelegate:(id)delegate{
如果(([UIImagePickerController]资源类型可用:
UIImagePickerControllerSourceTypeSavedPhotosAlbum]==否)
||(委托==零)
||(控制器==零)
返回否;
UIImagePickerController*mediaUI=[[UIImagePickerController alloc]init];
mediaUI.sourceType=UIImagePickerControllerSourceTypeSavedPhotosAlbum;
//从中显示保存的图片和电影(如果两者都可用)
//相机卷相册。
mediaUI.mediaTypes=
[UIImagePickerController可用于源类型的中间类型:
UIImagePickerControllerSourceTypeSavedPhotosAlbum];
//隐藏用于移动和缩放图片的控件,或用于
//剪辑电影。若要显示控件,请使用“是”。
mediaUI.allowsEditing=是;
mediaUI.delegate=委托;
[controller presentViewController:mediaUI动画:是完成:无];
返回YES;
}
-(无效)imagePickerController:(UIImagePickerController*)选择器
didFinishPickingMediaWithInfo:(NSDictionary*)信息{
NSString*mediaType=[info objectForKey:UIImagePickerControllerMediaType];
UIImage*原始图像,*编辑图像,*图像使用;
//处理从相册中拾取的静止图像
if(CFStringCompare((uu桥u保留的CFStringRef)媒体类型,kUTTypeImage,0)
==KCFComparequalto){
EditeImage=(UIImage*)[info objectForKey:
UIImagePickerControllerEditedImage];
originalImage=(UIImage*)[info objectForKey:
UIImagePickerController原始图像];
如果(编辑图像){
imageToUse=编辑图像;
}否则{
imageToUse=原始图像;
}
//用imageToUse做点什么
}
[[picker parentViewController]解除ModalViewController激活:是];
}
我认为错误在于最后一个方法的起始位置,但我不确定
你的文章没有太多的上下文来解释代码部分;请更清楚地解释您的场景。查找符号(
kUTTypeImage
)并找到它应该存在的图像/库(MobileCoreServices.framework
)。然后将二进制文件链接到该框架。答案:
import MobileCoreServices
与
UIDocumentPickerViewController一起使用时,请执行以下操作:
导入MobileCoReserves
let type=String(kUTTypeImage)
让documentPickerViewController=UIDocumentPickerViewController(documentTypes:[类型],位于:。导入)
也不要忘记导入标题!显然,我把CoreFoundation和MobileCoReserves联系起来了,而不是把@import MobileCoReserves;如果您不想导入框架并完成所有令人讨厌的工作(这不是您的错),我已经阅读了在UIImagePickerController
上可以找到的所有文档,他们谈论使用kUT*
来处理媒体类型
,但在他们的示例代码中,他们通常只是将一个函数的值传递给数组。他们从来没有在他们的代码中实际使用它,他们也没有提到您需要导入它。