Iphone 在xcode中将字节数组转换为映像?

Iphone 在xcode中将字节数组转换为映像?,iphone,xcode,uiimage,Iphone,Xcode,Uiimage,我得到一个字节数组(我估计)在NSMutableArray的对象中。我得到的NSMutableArray是从服务URL解析而来的Xml。现在我需要将该字节数组转换为UIImage。通过谷歌,发现可以转换为NSData,然后是UIImage,但不明白如何转换。。?我怎么做 我的数组如下所示: ( { Name = "John"; Image = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4w

我得到一个字节数组(我估计)在
NSMutableArray的
对象中。我得到的
NSMutableArray
是从服务URL解析而来的
Xml
。现在我需要将该字节数组转换为
UIImage
。通过谷歌,发现可以转换为
NSData
,然后是
UIImage
,但不明白如何转换。。?我怎么做

我的数组如下所示:

(
{
        Name = "John";
        Image = "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJS
kcgSlBFRyB2NjIpLCBxdWFsaXR5ID0gODAK/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXF
BYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgEKwZAAwEiAAIRAQMRAf/........
 //big byte array 
}
)

首先,我需要弄清楚它是否是字节数组?如何从中提取图像?

您的数据是这样组织的:

  • 最外面的数据结构是
    NSArray
    NSMutableArray
    (如您所写)
  • 在索引0(数组中的第一个元素)处,有一个
    NSDictionary
    实例
  • 在字典中,有两个键值对。一个是键图像和字符串作为值
  • 字符串值是二进制数据,编码为Base64
  • 二进制数据是图像数据
因此,要获得图像,您需要走以下路径:

NSMutableArray* array = ... // from XML
NSDictionary* dict = [array objectAtIndex: 0];
NSString* dataString = [dict objectForKey: @"Image"];
NSData* imageData = [dataString base64DecodedData];
UIImage* image = [UIImage imageWithData: imageData];
请注意,Base64解码不是iOS的一部分。但是网络上有许多将字符串解码成数据的实现。只需谷歌一下


可以在上找到外观良好且简单的Base64实现。

您的数据组织如下:

  • 最外面的数据结构是
    NSArray
    NSMutableArray
    (如您所写)
  • 在索引0(数组中的第一个元素)处,有一个
    NSDictionary
    实例
  • 在字典中,有两个键值对。一个是键图像和字符串作为值
  • 字符串值是二进制数据,编码为Base64
  • 二进制数据是图像数据
因此,要获得图像,您需要走以下路径:

NSMutableArray* array = ... // from XML
NSDictionary* dict = [array objectAtIndex: 0];
NSString* dataString = [dict objectForKey: @"Image"];
NSData* imageData = [dataString base64DecodedData];
UIImage* image = [UIImage imageWithData: imageData];
请注意,Base64解码不是iOS的一部分。但是网络上有许多将字符串解码成数据的实现。只需谷歌一下


可以在上找到一个外观良好且简单的Base64实现。

但是,在我的mac(10.7.4)和xcode 4.1docs中没有提供链接u中的示例:受支持的构建目标-iOS 5.1/mac OS 10.7(xcode 4.3,Apple LLVM编译器3.0)-您应该更新--我甚至可以说,对于任何严肃的工作,请转到xcode 4.5.2+(否则,找一个不同的实现——正如godo所说:有很多!dropbox sdk也有一个不错的实现)获取此错误:target指定了产品类型“com.apple.product type.tool”,但“iphonesimulator”平台没有此类产品类型您可能已向项目中添加了太多的文件。只需将Base64目录中的四个文件添加到现有的iPhone应用程序项目中,并将
NSString+Base64.h
导入到类w中即可在这里,您解码Base64数据。但是,u提供的链接中的示例没有在我的mac(10.7.4)上运行,xcode 4.1docs在那里:受支持的构建目标-iOS 5.1/mac OS 10.7(xcode 4.3,Apple LLVM compiler 3.0)-您应该更新--我甚至可以说,对于任何严肃的工作,请转到xcode 4.5.2+(否则,找一个不同的实现——正如godo所说:有很多!dropbox sdk也有一个不错的实现)获取此错误:target指定了产品类型“com.apple.product type.tool”,但“iphonesimulator”平台没有此类产品类型您可能已向项目中添加了太多的文件。只需将Base64目录中的四个文件添加到现有的iPhone应用程序项目中,并将
NSString+Base64.h
导入到类w中即可这里是对Base64数据的解码。