如何从WCF数据服务返回的JSON中获取图像数据?
我有一个WCF数据服务,它提供一些包含一些二进制数据的对象,这些二进制数据是一个图像(SQL Server中的列类型是image
)。它在JSON中被称为文本乱码。在我正在为此服务编写的iOS客户端中,我想将此数据显示为图像([UIImage imageWitData:myData]
)。
以下是我正在做的事情:
NSData *networkData = nil; //assume this magically gets data from the service
NSError *err = nil;
//assume the returned JSON has one object and is not an array
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:networkData
options:NSJSONReadingAllowFragments error:&err];
//handle error if needed
NSString *imageString = [dict objectForKey:@"Image"];
NSData *imageData = [imageString dataUsingEncoding:NSUTF8StringEncoding];
///The service is using UTF-8.
UIImage *image = [UIImage imageWithData:imageData];
将image
放在UIImageView
中并没有显示任何内容。我做错了什么?
答案 0 :(得分:2)
原来,从WCF数据服务返回的二进制数据是base64编码的。我正在使用NSData-Base64类别来解析它,它运行得很好。所以解决方案看起来像这样:
NSData imageData = [NSData dataFromBase64String:imageString];
当我将这些文件导入我的项目时,ARC抛出了一些错误,但我能够通过删除.m文件中的几个autorelease
调用来解决它们。