我一直在研究核心数据程序。我正在尝试在文本视图中组合实体的属性以保存为PDF和打印。该实体的一个属性使用二进制数据。
执行此操作时:
NSData *myData = [object valueForKey:@"cueNotes"];
...它返回:
typedstreamè@
NSMutableDataNSDataNSObjecti[276c]{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs20 \cf0 step one text}
当我尝试这个时:
NSAttributedString* myDataTry = [[[NSAttributedString alloc] initWithRTF:myData documentAttributes:nil] autorelease];
... myDataTry是零。我读了一些关于rtf格式的内容,然后将其删除:
typedstreamè@
NSMutableDataNSDataNSObjecti[276c]
...来自myData数据,但仍然得到一个零结果。有谁知道我做错了什么?
更新:在考虑了第一个答案之后我尝试了这个(以及几个排列):
NSString* notesString = [[[NSString alloc] initWithRTF:[object valueForKey:@"cueNotes"] documentAttributes:nil] autorelease];
以及分配的字符串,但仍然没有结果。
以下是我要提取的实体的结果:
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)
当您将实际对象(如NSAttributedString实例)保存到Core Data时,应将其保存为可转换类型而不仅仅是数据。这将让你“冻结”实际的实例,然后在不需要进一步处理的情况下立即将其恢复原状。