0

我已成功将 UIImage 转换为 NSData 并使用 SBJson Web 服务将其发送到服务器。我正在使用这段代码:

img=mainImage.image;
NSData *imgdata=UIImagePNGRepresentation(img);

NSString *post =[[NSString alloc] initWithFormat:@"gid=%@&image=%@",[lblgid text],imgdata];

NSURL *url=[NSURL URLWithString:@"http://www.abchjahdkahdakjskahdk/updategameimage.php"];

这里img是 UIImage,mainImage是 UIImageView。从这开始一切都很好。现在在另一端,我必须在那里获得图像,我面临问题。我正在使用这段代码:

 NSData *imgdata=[abc valueForKey:@"image"];

    imge = [UIImage imageWithData:imgdata];

    imgview=[[UIImageView alloc]initWithImage:imge];

当我打印imgdata时,它返回的数据与我从另一端发送的数据相同,但是当我尝试将此数据转换回 UIImage(在上述代码的第二行中)时,它会引发异常。

2013-01-22 14:23:43.298 Drase[946:11303]-[__NSArrayI 长度]:无法识别的选择器发送到实例 0x7566800 2013-01-22 14:23:43.298 Drase[946:11303] * 由于未捕获而终止应用程序exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x7566800' * First throw call stack: (0x1ce1012 0x111ee7e 0x1d6c4bd 0x1cd0bbc 0x1cd094e 0x1cb1b2 0x881f3 0x87ef4 0x1c659 0x1132705 0x69920 0x698b8 0x12a671 0x12abcf 0x129d38 0x9933f 0x99552 0x773aa 0x68cf8 0x1c3cdf9 0x1c3cad0 0x1c56bf5 0x1c56962 0x1c87bb6 0x1c86f44 0x1c86e1b 0x1c3b7e3 0x1c3b668 0x6665c 0x29d2 0x2905)libc++abi.dylib:终止调用抛出异常。

我没有得到任何解决这个问题的方法,请帮帮我。

4

2 回答 2

0

我认为 abc 是 NSArray 类型,即不可变,当您执行此行时

imge = [UIImage imageWithData:imgdata];

它引用了abc NSArray因为imgdata

在这里,您间接尝试修改它,这就是它调用[__NSArrayI length]. 但实际上没有这样的方法,因为我们可以计算 NSArray 但不能测量长度。这意味着没有这样的方法,这就是它给出错误的原因

[__NSArrayI length]: unrecognized selector sent to instance

更新1:

尝试做这样的事情:

NSData *imgdata=[[abc valueForKey:@"image"]objectAtIndex:0];
于 2013-01-22T09:06:45.150 回答
0

尝试

  NSData *data = yourData;

  UIImage *image = [UIImage imageWithData:data];

或者

  NSData *data = yourData;

  UIImage *image = [[UIImage alloc] initWithData:data];
  ....
  [image release];
于 2013-01-22T09:06:46.780 回答