尝试在应用程序错误 NSInvalidArgumentException 中保存/加载图像

Posted

技术标签:

【中文标题】尝试在应用程序错误 NSInvalidArgumentException 中保存/加载图像【英文标题】:Trying to save/load image in app error NSInvalidArgumentException 【发布时间】:2012-05-04 18:48:44 【问题描述】:

我正在尝试保存和加载从我的应用程序中的相机胶卷中挑选的图像。当我按下加载或保存按钮时出现错误

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIImageView CGImage]:无法识别的选择器发送到实例 0xe637640”

有什么想法吗?

AppDelagate .m

- (NSURL *)applicationDocumentsDirectory

    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory i       nDomains:NSUserDomainMask] lastObject];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

.m of class im 试图保存/加载图像

- (IBAction)save:(id)sender 
UIImage *myImage = imageView;
NSData *data = UIImagePNGRepresentation(myImage);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appDocsDirectory = [paths objectAtIndex:0];




- (IBAction)load:(id)sender 
UIImage *myImage = imageView;
NSData *data = UIImagePNGRepresentation(myImage);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appDocsDirectory = [paths objectAtIndex:0];
UIImage* thumImage = [UIImage imageWithContentsOfFile: [NSString stringWithFormat:@"%@/%@.png", appDocsDirectory, @"myNewFile"]];

【问题讨论】:

我最初的想法是您没有正确标记问题并且您没有包含堆栈跟踪。 你似乎不想帮助自己。您的标签错误;它们都是无关紧要的(有人可以纠正它们,但是为什么要纠正它们呢?)。如果您没有正确标记问题,那么合适的人可能会错过它。在异常/崩溃的情况下,拥有堆栈跟踪以查明问题所在至关重要。因此,如果您需要帮助,您需要提供更好的信息。 你还在做这个吗?去打扰别人 【参考方案1】:

这个错误意味着消息 CGImage 被发送到 UIImageView 类型的对象,但 UIImageView 没有响应它。问题似乎出在

UIImage *myImage = imageView;

你没有正确编写imageView的实现,所以我不能准确地说,但我假设imageView是UIImageView,它是UIView的子类,你将它分配给UIImage。试试

UIImage *myImage = [imageView image];

相反。我认为这应该可行))

顺便问一下,-load 中为什么需要第一串和第二串代码?它们是不必要的:

- (IBAction)load:(id)sender 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appDocsDirectory = [paths objectAtIndex:0];
UIImage* thumImage = [UIImage imageWithContentsOfFile: [NSString stringWithFormat:@"%@/%@.png", appDocsDirectory, @"myNewFile"]];

【讨论】:

谢谢,这已经阻止了异常被抛出,我已经摆脱了两行多余的代码,感谢您的指出和您的帮助。现在我只需要保存和加载图像!

以上是关于尝试在应用程序错误 NSInvalidArgumentException 中保存/加载图像的主要内容,如果未能解决你的问题,请参考以下文章

NSInvalidArgumentException [NSDictionary initWithObjects:forKeys:]:对象数 (0) 与键数 (1) 不同

FBRequestConnection startForMeWithCompletionHandler - NSInvalidArgumentException

得到:“有部署错误”。继续?在尝试调试服务结构应用程序时

尝试在应用程序错误 NSInvalidArgumentException 中保存/加载图像

在出现应用程序错误但回滚后尝试插入表

当我尝试在我的 Android 设备上预览我的应用程序时显示错误