tutoriaux d'apprentissage ne marche pas ;)
petipapa
Membre
Bonjour à tous,
Je suis nouveau sur le forum et tente d'apprendre l'objective C et trouve le début relativement simple grace notament aux ouvrages en ligne de project Oméga.
Je rencontre cependant un problème que je n'arrive pas à résoudre:
Dans le tutoriel n°4 (ou il s'ajit d'implanter les fonctions d'enregistrement et de lecture), je me suis aperçu que l'auteur s'est basé sur une vieille version de Xcode.
Ainsi, lorsequ'il est demandé de renseigner le futur soft des types de fichier à prendre en compte (l'extension en .rtfd) l'auteur nous signale qu'il faut le renseigner en 2 endroits différents (je n'en ai trouvé qu'un)
D'autre part, à la compilation, pas de problème mais à l'utilisation, la fonction
[textView replaceCharactersInRange:NSMakeRange(0, 0) withRTFD:fileData];
me fait planter l'appli. (cette fonction sert normalement à afficher le texte chargé dans le NSData dans l'éditeur de texte.
J'ai essayé en utilisant les .rtf et la fonction withRTF mais même commentaires.
Quelqu'un pourrait il m'aguiller vers une solution
PS, il parrait que le nouveau paye une tournée??!!
A la votre
Je suis nouveau sur le forum et tente d'apprendre l'objective C et trouve le début relativement simple grace notament aux ouvrages en ligne de project Oméga.
Je rencontre cependant un problème que je n'arrive pas à résoudre:
Dans le tutoriel n°4 (ou il s'ajit d'implanter les fonctions d'enregistrement et de lecture), je me suis aperçu que l'auteur s'est basé sur une vieille version de Xcode.
Ainsi, lorsequ'il est demandé de renseigner le futur soft des types de fichier à prendre en compte (l'extension en .rtfd) l'auteur nous signale qu'il faut le renseigner en 2 endroits différents (je n'en ai trouvé qu'un)
D'autre part, à la compilation, pas de problème mais à l'utilisation, la fonction
[textView replaceCharactersInRange:NSMakeRange(0, 0) withRTFD:fileData];
me fait planter l'appli. (cette fonction sert normalement à afficher le texte chargé dans le NSData dans l'éditeur de texte.
J'ai essayé en utilisant les .rtf et la fonction withRTF mais même commentaires.
Quelqu'un pourrait il m'aguiller vers une solution
PS, il parrait que le nouveau paye une tournée??!!
A la votre
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- Quelle est la version de Xcode prise en exemple par projectOmega
- La version de Xcode que tu utilises.
- La version de l'OS
- Quel est cet "endroit différent" dont parle Omega et que tu ne trouves pas dans ta version d'Xcode.
Pour ta deuxième question, est-ce que tu as regardé les valeurs de textView ou fileData. Un debug ou un NSLog() pourraient nous donner une piste pour comprendre ce crash.
Sinon, merci pour la tournée et welcome !
C'est les versions 1.x.
Xcode Version 2.4.1 (la dernière en date)
OSX 10.4.8
La partie concernée se situe dans le PDF suivant: http://www.projectomega.org/contents/fr/php/oreilly/cocoa/MacOSX_Cocoa_5.pdf
Dans cette partie on apprends à :
Créer un outlet dans la classe Mydocument (sous classe de NSDocument)
et la raccorder au NSTextView
De retour dans PB, on déclare la variable via id IBOutlet textView;
ainsi que le contenu à enregistrer / charger NSData *fileData;
dans le header mydocument.h
dans le mydocument.m, on va entrer le code pour enregistrer le contenu du NSTextView
- (NSData *)dataRepresentationOfType:(NSString *)aType
{
NSRange range = NSMakeRange(0, [[textView textStorage] length]);
return [textView RTFDFromRange:range];
}
Charger un fichier RTFD en mémoire:
- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
{
fileData = data;
return fileData != nil;
}
et afficher le fichier chargé dans le NSTextView:
- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
[super windowControllerDidLoadNib:aController];
if ( fileData != nil )
{
[textView replaceCharactersInRange:NSMakeRange(0, 0)
withRTFD:fileData];
}
}
Il ne faut pas oublier la déclaration des extensions prises en charge:
Nous devons indiquer à PB que notre document est au format RTFD. Pour l?instant nous ne lui avons rien dit du format en termes de structure de données, ni ce qu?est l?extension du fichier ou sa signature. Pour ce faire, ouvrez l?onglet " Targets " et cliquez sur la cible SimpleTextEditor. Dans cette vue, cliquez sur l?onglet " Application Settings ".
Il y a deux endroits où nous devons indiquer l?extension du fichier dans la panneau de réglage de l?application. Tapez rtfd dans le champ Signature des Informations Basiques. Maintenant faites défiler vers le bas jusqu?à " Document Types " et sélectionnez la ligne " DocumentType " dans le tableau. Sous le tableau, vous pouvez éditer l?information type, tapez rtfd dans les champs "
Extensions " et " OS Types ". Descendez encore et pressez le bouton " Change ". Maintenant que
c?est fait, allons plus loin.
Voila en gros ce qui est demandé. Je sais que ce n'est pas beaucoup demandé mais j'ai constaté plusieurs disfonctionnements:
Le premier:
Après enregistrement d'un fichier rtfd et ouverture je constate les différence suivantes:
texte tapé puis enregistré: coucou
fichier ouvert sous textedit:
rtfd