Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从JSON字符串转换为UIImage总是会得到null?_Ios_Objective C_Xcode_Uiimageview_Uiimage - Fatal编程技术网

Ios 从JSON字符串转换为UIImage总是会得到null?

Ios 从JSON字符串转换为UIImage总是会得到null?,ios,objective-c,xcode,uiimageview,uiimage,Ios,Objective C,Xcode,Uiimageview,Uiimage,我得到了这种JSON: 注意:我在“内容”中加了点,因为它的字节数组太长,无法解释这种情况 { "id":"53abc6a7975a9c10c292f670", "nfcId":"testse", "company":"TESt", "qrId":"testvalue", "address":"ajs;ldfh", "mimeType":"IMAGE", "url":"", "content":"iVBORw0KGgoAAAANSUhEUgAA..

我得到了这种JSON:

注意:我在“内容”中加了点,因为它的字节数组太长,无法解释这种情况

{
   "id":"53abc6a7975a9c10c292f670",
   "nfcId":"testse",
   "company":"TESt",
   "qrId":"testvalue",
   "address":"ajs;ldfh",
   "mimeType":"IMAGE",
   "url":"",
   "content":"iVBORw0KGgoAAAANSUhEUgAA....."
}
我正在尝试获取这个Json并显示这个信息 “内容”字段有一个在服务器上从映像转换为字节数组的字节数组

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

    NSData *dataImage = [jsonArray[key] dataUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"data = %@", dataImage);
    UIImage *img = [UIImage imageWithData:dataImage];
    NSLog(@"img = %@", img);
图像总是给我空值。虽然,数据给了我数据数组

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

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

我刚刚试过这段代码,它很有效:

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

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

我以前使用过类似的代码

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

请注意,
initWithBase64EncodedString
仅在iOS7之后可用

您的
内容的可能副本
将显示为图像数据的base-64字符串表示形式。它是.png image@ali59aIt的base64编码。看看我链接到的问题。顺便说一句,图像数据永远不会用你尝试过的任何字符串编码。不能使用
UTF8
UTF16
ASCII
对图像数据进行编码。它们是字符串编码,不是图像编码。但我不知道它是PNG还是JPG。我可以让它处理所有图像吗?是的,图像文件扩展名是什么并不重要。但在将数据转换为图像之前,请检查(imageData)是否正确,然后根据需要添加一些虚拟图像。如果我们在没有数据的情况下不检查(imageData),应用程序将因为将null转换为图像而崩溃