尝试在应用程序错误 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