我的应用不断崩溃,显示以下消息:
* 由于未捕获的异常'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中有一个图像。感谢。
答案 0 :(得分:14)
base64EncodedStringWithOptions:
可用。
“无法识别的选择器”异常可能意味着您运行代码 早期的iOS版本,该方法不可用。
有第三方库提供类似的方法,可以使用 相反,如果你必须支持iOS 6或5(例如https://github.com/nicklockwood/Base64)。
NSData
文档还指出存在base64Encoding
方法
(及其对应initWithBase64Encoding:
)
虽然这种方法仅针对iOS 7公开发布,但它有 从iOS 4开始存在;如果您的应用需要,您可以使用它 在iOS 7之前定位操作系统。此方法的行为类似于 base64EncodedStringWithOptions:,但忽略所有未知字符。
(所以似乎iOS长时间有NSData
到Base64转换,但它
从来没有公开记录!)