我有一个实体(名为Song),其中一个属性是二进制数据(rtf字段),我用它来存储和弦图或有关歌曲的音符。我需要能够打印此字段以及此实体的其他字符串字段。我已经尝试了我能想到的每一种排列:
NSString* notesString = [[[NSString alloc] initWithRTF:[object valueForKey:@"cueNotes"] documentAttributes:nil] autorelease];
我成功地将`[object valueForKey:@“cueNotes”]解析为NSData并查看了rtf格式化数据,但是当我尝试initWithRTF时,我得到一个null结果。
以下是我从中提取此数据的实体的日志示例:
2010-10-30 00:47:32.867 lzshow7.2[4222:10b] <NSManagedObject: 0x2a4850> (entity: Song; id: 0x26a030 <x-coredata:///Song/t172F066B-285C-4125-B2FA-CFFA6A353D102> ; data: {
cueName = Stupid;
cueNo = 001;
cueNotes = <040b7479 70656473 74726561 6d8103e8 84014084 84840d4e 534d7574 61626c65 44617461 00848406 4e534461 74610084 8408>;
songToEffect = (
);
songToInstrument = (
);
})
任何人都可以提供的帮助将不胜感激。
答案 0 :(得分:0)
initWithRTF:是NSAttributedString的一种方法; NSString不会响应该选择器并返回nil,因此您只需更改类名即可解决此问题。
你的编译器必须在那里警告过你 - 我建议你不要忽略编译器警告,这样可以省去很多麻烦。
此外,nil只应该用于id - 因为对于文档属性不是这种情况,你应该在那里使用NULL。