0

我一直在研究核心數據程序一段時間。我試圖在文本視圖中結合實體的屬性以保存爲PDF和打印。該實體的一個屬性使用二進制數據。將二進制數據(rtf)讀到字符串

當我執行此:

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

當你保存就像NSAttributedString實例核心數據一個實際的對象,你應該保存它作爲一種可變形的類型而不僅僅是數據。這可以讓你「凍結」實際的實例,然後不加修改地進行修改,而不需要進一步的處理。

+0

「凍幹」數據會影響myData返回爲零的事實嗎? – 2010-10-16 14:53:09

+0

不,我很確定你得到了一個無歸屬字符串,因爲當你保存它時,你將屬性字符串轉換爲原始數據而不是RTF。您正嘗試使用旨在寫入Core Data中的文本文件的方法。您需要避免所有這些,並將實際屬性字符串實例本身保存在可轉換屬性中。 – TechZen 2010-10-17 18:35:34

+0

你有沒有關於你在說什麼的例子? – 2010-10-25 21:30:17

相關問題