– :无法识别的选择器发送到实例0x776e920′

我的应用程序一直崩溃,并显示以下消息:

*由于未捕获的exception’NSInvalidArgumentException’终止应用程序,原因:’ – [NSConcreteMutableData base64EncodedStringWithOptions:]:无法识别的选择器发送到实例0x776e920′

这是代码的一部分。 任何帮助将不胜感激:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ // Saving the image in the uiimage "myImage". UIImage *myImage = [info objectForKey:UIImagePickerControllerOriginalImage]; NSString *imageString = [self encodeToBase64String:myImage]; [self dismissViewControllerAnimated:YES completion:NULL]; } - (NSString *)encodeToBase64String:(UIImage *)image{ NSString * test = [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return test; } 

我已经检查过,UIImage中有一个图像。 谢谢。

base64EncodedStringWithOptions:从iOS 7和OS X 10.9开始可用。

“无法识别的选择器”exception可能意味着您在较早的iOS版本上运行代码,此方法不可用。

有第三方库提供类似的方法,如果你必须支持iOS 6或5(例如https://github.com/nicklockwood/Base64 ),可以使用它们。

NSData文档还声明有一个base64Encoding方法(及其对应的initWithBase64Encoding: base64Encoding

虽然这种方法仅针对iOS 7公开发布,但它自iOS 4起就已存在; 如果您的应用程序需要在iOS 7之前定位操作系统,则可以使用它。此方法的行为类似于base64EncodedStringWithOptions:,但忽略所有未知字符。

(所以似乎iOS有很长一段时间的NSData到Base64转换,但它从未公开记录!)