2

如何从 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放在 aUIImageView中不会显示任何东西。我究竟做错了什么?

4

1 回答 1

2

事实证明,从 WCF 数据服务返回的二进制数据是 base64 编码的。我正在使用NSData-Base64类别来解析它,它工作得很好。所以解决方案如下所示:

NSData imageData = [NSData dataFromBase64String:imageString];

当我将这些文件导入到我的项目中时,ARC 引发了一些错误,但我能够通过删除autorelease.m 文件中的几个调用来解决它们。

于 2012-10-17T21:07:04.060 回答