-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *) elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if ([elementName isEqual:@"image"]) {
NSLog(@"Encoded Data %@",encodedData); //THIS SHOWS UP FINE
//lets now show image
UIImage * decodedImage = [[UIImage alloc] initWithData:[Base64 decode:encodedData]];
[Image setImage:decodedImage]; //WHERE IS THE IMAGE?
[encodedData release];
encodedData = nil;
}
}
我使用以下库进行base 64解码。 http://imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php
答案 0 :(得分:1)
这是错误的。
[Image setImage:decodedImage]; //WHERE IS THE IMAGE?
你可能想要做的是;
[myImageView setImage:decodedImage];
因此,请在您定义UIImageView *的位置发布代码。如果您有一个如此定义的名为 Image 的实例变量,请注意您不应该使用大写字母来启动它,因为这意味着类定义,而不是ivar。
答案 1 :(得分:1)
-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *) elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
if ([elementName isEqual:@"image"]) {
NSLog(@"Encoded Data %@",encodedData); //THIS SHOWS UP FINE
//lets now show image
UIImage * decodedImage = [[UIImage alloc] initWithData:[Base64 decode:encodedData]];
[yourImageView setImage:decodedImage]; //WHERE IS THE IMAGE?
//Make sure that you have the imageView added as subview to your current view.
[encodedData release];
encodedData = nil;
[decodedImage release];
}
}
答案 2 :(得分:0)
我不知道您是否对服务器有任何控制权,但我不会将图像数据直接放在XML中。为什么不直接将URL放在XML中的图像中,然后使用该URL下载图像?
我还建议使用DOM解析器。我通常使用JSON,因此我不知道哪一个最适合XML,但DOM解析器可以让您的生活更轻松。
答案 3 :(得分:0)
根据您发布的代码以及您详细说明问题的程度,很难找到代码无效的任何原因。当你发布任何问题时,总是尽可能地清楚。借助提供日志输出,屏幕截图,以便此处的人可以准确了解您的问题。
我对您从Web服务获取的数据存有疑问。但正如你所说的那样,正如Jenifer所说,解码就是问题所在。您是否尝试过打印解码数据的描述?
如果它被解码,那么在imageView上添加它可能是个问题。 正如Roger认为你'Image'对象不应该是UIImageView类的实例而是UIImage类,这是一个非常愚蠢的错误,我觉得不是这样。
您可以从编码数据中打印出您获得的NSData日志吗?