Objective c 从NSString数据填充NSImageView框

Objective c 从NSString数据填充NSImageView框,objective-c,image,cocoa,Objective C,Image,Cocoa,我对Objective C非常陌生,我在谷歌搜索了几个小时,试图找到一个解决方案 我有一个字符串,看起来像 273350/364D4D002A00041EB8F1E0CEF1E0CCF1E0CCF1E0CCF1E0CCF etc etc 它指的是TIFF图像(我猜是某种原始字符串格式),我想用数据填充NSImageView 这就是我迄今为止所尝试的: NSData *picdata = [NSData dataWithBytes:[albumArtStr UTF8String] length:

我对Objective C非常陌生,我在谷歌搜索了几个小时,试图找到一个解决方案

我有一个字符串,看起来像

273350/364D4D002A00041EB8F1E0CEF1E0CCF1E0CCF1E0CCF1E0CCF etc etc
它指的是TIFF图像(我猜是某种原始字符串格式),我想用数据填充NSImageView

这就是我迄今为止所尝试的:

NSData *picdata = [NSData dataWithBytes:[albumArtStr UTF8String] length:[albumArtStr length]];
NSImage *myPicture = [[NSImage alloc] initWithData:picdata];
[_albumArtCell setImage:myPicture];

其中,“albumArtCell”是NSImageView

我认为问题在于
[albumArtStr length]
返回的是“unicode字符”的数量,而不是“字节”的数量

因此,您的NSData可能没有设置为正确的大小,因此没有正确的格式来正确解码UIImage

请尝试以下操作,从NSString实例创建NSData:

NSData* picData = [albumArtStr dataUsingEncoding: NSUTF8StringEncoding];

该数据看起来像是前面有长度的十六进制编码图像,而不是未编码的TIFF,这是一种标记的二进制格式。也许您需要在斜杠前去掉数字,并将字符串的其余部分从十六进制数字解码为NSData,然后使用确定的数据调用
[[NSImage alloc]initWithData]


您需要先将其解码为二进制,然后再将其交给
NSImage
,因为它只理解原始的TIFF二进制形式。

那么这之后会发生什么?ImageView保持为空:(.我想甚至没有办法测试
myPicture
是否设置正确!我想这会对你有所帮助我认为这是将文本叠加到图像上,而不是从十六进制字符串创建图像