从JSON字符串转换为UIImage始终为null?

时间:2014-06-27 07:29:46

标签: ios objective-c xcode uiimageview uiimage

我得到这种JSON:

注意:我把点放在“内容”中,因为它太长了字节数组abd只是为了解释这种情况。

{
   "id":"53abc6a7975a9c10c292f670",
   "nfcId":"testse",
   "company":"TESt",
   "qrId":"testvalue",
   "address":"ajs;ldfh",
   "mimeType":"IMAGE",
   "url":"",
   "content":"iVBORw0KGgoAAAANSUhEUgAA....."
}

我试图让这个Json得到这个信息 “content”字段有一个Byte数组,在服务器上从Image转换为字节数组。

我在xCode中使用此代码将这些字节转换为NSData,然后转换为UIImage以便能够在UIImageView中显示它:

    NSData *dataImage = [jsonArray[key] dataUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"data = %@", dataImage);
    UIImage *img = [UIImage imageWithData:dataImage];
    NSLog(@"img = %@", img);

图像总是给我null。虽然,数据给我数据数组。

我也尝试了各种编码作为NSData参数:

dataUsingEncoding:NSASCIIStringEncoding
dataUsingEncoding:NSUTF8StringEncoding
dataUsingEncoding:NSUTF16StringEncoding
dataUsingEncoding:NSUTF32StringEncoding

2 个答案:

答案 0 :(得分:2)

我之前使用过这样的代码

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"data:image/png;base64,%@",jsonArray[key]]];
    NSData *imageData = [NSData dataWithContentsOfURL:url];
    UIImage *img = [UIImage imageWithData:imageData];

请注意,initWithBase64EncodedString仅适用于iOS7及以上版本

答案 1 :(得分:1)

我现在尝试使用此代码并且可以正常运行:

NSData* dataImage = [[NSData alloc] initWithBase64EncodedString:jsonArray[key] options:0];
UIImage *img = [UIImage imageWithData:dataImage];

Base64字符串类型编码的“内容”。