2013-04-13 105 views
0

我對Objective C非常陌生,我一直在Google上搜索幾個小時,試圖找到解決方案。從NSString數據填充NSImageView框

我有一個NSString,它看起來像

273350/364D4D002A00041EB8F1E0CEF1E0CCF1E0CCF1E0CCF1E0CCF etc etc 

是指TIFF圖像(我想在某種RAW字符串格式的),我想填充的NSImageView與數據。

這是我到目前爲止已經嘗試:

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

其中「albumArtCell」是NSImageView

+1

那麼在這之後發生了什麼? –

+0

ImageView保持爲空:(我不認爲有一種方法可以測試'myPicture'設置是否正確! – Jordan

+0

我認爲[this](http://stackoverflow.com/questions/7343814/drawing-nsstring -to-uiimage)可以幫助您 –

回答

1

即數據看起來像十六進制編碼的圖像與在其前面的長度,而不是一個未編碼的TIFF,它是一個標記的二進制格式。也許你需要去掉斜槓前的數字,並將字符串的其餘部分從十六進制數字解碼到NSData中,然後使用決定的數據調用[[NSImage alloc] initWithData]

因爲它只理解TIFF的原始二進制格式,所以在將其交給NSImage之前,您需要將其解碼爲二進制文件。

1

我相信這個問題是由於這樣的事實:[albumArtStr length]返回「Unicode字符的數量「,而不是」字節數「。

所以你的NSData可能沒有被設置爲正確的大小,所以沒有正確解碼UIImage的格式。

嘗試此代替從NSString的實例來創建的NSData:

NSData* picData = [albumArtStr dataUsingEncoding: NSUTF8StringEncoding];