Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将映像添加到Mail-MFMailComposeViewController时出错_Iphone_Ios_Objective C_Xcode - Fatal编程技术网

Iphone 将映像添加到Mail-MFMailComposeViewController时出错

Iphone 将映像添加到Mail-MFMailComposeViewController时出错,iphone,ios,objective-c,xcode,Iphone,Ios,Objective C,Xcode,我正在尝试使用MFMailComposeViewController发送一个已添加到项目中的图像 我在模拟器中尝试了这个方法,效果很好,我也可以在文本字段中看到图像,但当我尝试发送邮件时,控制台上出现以下错误: 2月10日16:22:02 Markus-macbook-pro.speedport.ip RMC Konus[1825]:CGImageCreate:无效图像大小:0 x 0 我的代码: //Get the Image UIImage *image = [UIImage imageNa

我正在尝试使用MFMailComposeViewController发送一个已添加到项目中的图像

我在模拟器中尝试了这个方法,效果很好,我也可以在文本字段中看到图像,但当我尝试发送邮件时,控制台上出现以下错误:

2月10日16:22:02 Markus-macbook-pro.speedport.ip RMC Konus[1825]:CGImageCreate:无效图像大小:0 x 0

我的代码:

//Get the Image
UIImage *image = [UIImage imageNamed:@"image.png"];

NSData *imageData = UIImagePNGRepresentation(image);

//Create the Mail View
MFMailComposeViewController *mailCV = [[MFMailComposeViewController alloc] init];

[mailCV setMailComposeDelegate:self];



[mailCV addAttachmentData:imageData mimeType:@"image/png" fileName:@"exGraphic.png"];

//Show the View Controller
[self presentViewController:mailCV animated:YES completion:nil];

UIImagePNGRepresentation的返回值(来自apple文档)-

包含PNG数据的数据对象,如果出现问题,则为nil 生成数据。如果图像没有显示,此函数可能返回nil 数据,或者如果基础CGImageRef包含不受支持的 位图格式

这意味着检查您的图像是否支持将其转换为png格式的NSData,因为您在此处接收到空值。错误
cImageCreate:无效图像大小:0 x 0。
表示该图像为空值。
通过更改图像进行检查。也可以在不使用
[UIImage imageNamed:@”“]
的情况下进行检查,因为此方法有许多缺点


还有一件事,您已经将image.png图像转换为NSData并将另一个图像exGraphic.png作为附件发送,请检查它

问题只会出现在模拟器中。
我在许多不同的设备上检查这些代码,它仍然可以正常工作。所以我想说,这是模拟器的问题…

不确定这是否有助于解决您遇到的错误,但是您是否考虑过直接从图像文件加载图像的
NSData
?我的意思是通过调用
NSString*path=[[NSBundle mainBundle]pathForResource:@“image”of type:@“png”],获取应用程序包中图像的路径然后使用
[NSData DATA WITH CONTENTS OFFILE:path]
加载
NSData
?在当前的实现中,在调用
-imageNamed:
时首先对.png图像进行解码,然后使用
UIImagePNGRepresentation
再次对其进行编码。这似乎是不合理的开销。你说你实际上是在发送电子邮件。这意味着您必须在真实设备上运行应用程序。您确定图像的名称确实是
image.png
,而不是像
image.png
image.png
这样的名称吗?在真正的设备上,案例很重要。在调试器中运行代码并验证
image
不是
nil
。我已经检查过了,NSData对象不是nil@伊戈尔:谢谢你关于图像加载的建议,我已经更改了这个,但是错误仍然存在,这是一个半随机的建议,可能值得尝试。如果您尝试附加JPEG图像表示而不是PNG,您是否检查了错误是否仍然出现?@Egor,请查看我对Ravindra答案的评论。我认为问题不在于图像,正如我看到的,我可以在邮件视图中看到图像。错误只会出现,如果在MailComposer视图中出现警告对话框,则我已选中此项,NSData对象不是nilOk,我已选中此项,我不会发送任何其他具有此名称的图像。但我发现了另一件事。只有当主题字段为空且我收到警告时,错误才会出现,即我添加了一个空主题。如果我在“主题”字段中添加一些文本,则不会出现错误…这是错误还是警告?出现此消息时,应用程序是否崩溃?这可能是一个关于邮件如何在其上实现的模拟器怪癖(它不是真正的邮件应用程序)。试着省去附件代码,看看当你省去主题时,错误是否仍然发生。@Tim:应用程序没有崩溃,我只收到我在问题中发布的消息。如果我留下附件代码,错误就不会出现……你在模拟器上看到这个消息了吗?