0

Je travaille sur un programme de base de données depuis un moment déjà. J'essaie de combiner les attributs d'une entité dans une vue de texte pour enregistrer au format PDF et imprimer. L'un des attributs de l'entité utilise des données binaires.lecture de données binaires (rtf) en chaîne

Quand j'exécute ceci:

NSData *myData = [object valueForKey:@"cueNotes"];

... il retourne ceci:

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} 

lorsque je tente ceci:

NSAttributedString* myDataTry = [[[NSAttributedString alloc] initWithRTF:myData documentAttributes:nil] autorelease]; 

... myDataTry est nul . Je lis un peu le format rtf, puis enlevé ceci:

typedstreamè@ 
NSMutableDataNSDataNSObjecti[276c] 

... à partir des données myData mais toujours obtenir un résultat nul. Est-ce que quelqu'un a une idée de ce que je fais mal?

Mise à jour: Après avoir réfléchi à la première réponse que j'ai essayé ce (ainsi qu'un permutations couple):

NSString* notesString = [[[NSString alloc] initWithRTF:[object valueForKey:@"cueNotes"] documentAttributes:nil] autorelease]; 

ainsi qu'une chaîne allouée et toujours pas de résultats.

Voici les résultats de l'entité que je tire de:

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 =  (
); 

})

Répondre

0

Lorsque vous enregistrez un objet réel comme un cas de NSAttributedString à base de données, vous devez l'enregistrer comme un type transformable au lieu de seulement des données. Cela vous permettra de "geler" l'instance réelle et de la récupérer sans modification, sans traitement supplémentaire.

+0

Est-ce que le "gel de séchage" des données affecte le fait que myData est retourné comme nul? –

+0

Non, je suis à peu près certain que vous obtenez une chaîne nulle attribuée car vous convertissez la chaîne attribuée en données brutes au lieu de RTF lorsque vous l'enregistrez. Vous essayez d'utiliser des méthodes destinées à écrire dans des fichiers texte dans les données de base. Vous devez éviter tout cela et sauvegarder l'instance de chaîne attribuée proprement dite dans un attribut transformable. – TechZen

+0

avez-vous un exemple de ce dont vous parlez? –

Questions connexes