- [NSConcreteMutableData base64EncodedStringWithOptions:]:无法识别的选择器发送到实例0x776e920'

时间:2013-11-27 23:15:26

标签: ios objective-c unrecognized-selector

我的应用不断崩溃,显示以下消息:

* 由于未捕获的异常'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中有一个图像。感谢。

1 个答案:

答案 0 :(得分:14)

从iOS 7和OS X 10.9开始,

base64EncodedStringWithOptions:可用。

“无法识别的选择器”异常可能意味着您运行代码 早期的iOS版本,该方法不可用。

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

NSData文档还指出存在base64Encoding方法 (及其对应initWithBase64Encoding:

  

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

(所以似乎iOS长时间有NSData到Base64转换,但它 从来没有公开记录!)