2010-12-15 46 views
0

J'ai une entité (nommée Song) dont l'un des Attributs est une donnée binaire (un champ rtf) que j'utilise pour stocker des diagrammes d'accords ou des notes sur un morceau. Je dois être en mesure d'imprimer ce champ avec les autres champs de chaîne de cette entité. J'ai essayé toutes les permutations de ce que je peux penser à:Lecture d'informations rtf à partir d'entrées d'entité vers NSString

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

Quand je lance ce à travers le debuger le résumé pour myDataTry lit « hors de portée » jusqu'à ce que la rupture de la ligne suivante puis myDataTry lit nulle.

De quoi ai-je besoin pour changer cette situation?

Répondre

1

Voici ce qui a fonctionné:

NSString *aStr = [[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding]; 
     NSRange r = [aStr rangeOfString:@"{"]; 
     NSString *newAStr = [aStr substringFromIndex:r.location]; 
     NSData *newMyData; 
     newMyData = [newAStr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:1]; 
     NSAttributedString* myDataTry = [[[NSAttributedString alloc] initWithRTF:newMyData documentAttributes:NULL]autorelease]; 

maintenant insérer que dans la fenêtre avec tout le reste! Merci pour votre point dans la bonne direction @ShaggyFrog

1

La référence pour initWithRTF:documentAttributes: lit:

Renvoie un objet initialisées, ou nul si rtfData ne peut être décodé. Etes-vous absolument certain que vos données RTF peuvent être décodées?

+0

Je ne suis pas tout à fait sûr ... voici ce qui est retourné: 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 étape un texte} –

+0

J'ai recherché la convention de format rtf et trouvé que les choses avant le "{" étaient garbage. J'ai donc converti les données en une chaîne supprimée de la poubelle à l'avant et maintenant je tente de le convertir en données et de lire les trucs rtf. –