Question de debutant, save/load

iFlighTiFlighT Membre
17:44 modifié dans API AppKit #1
Voila je suis les tutoriaux que j'ai trouve par-ci par-la, mais a chaque fois j'ai un probleme au niveau du code pour faire que mon application enregistre/charge mon documents.

on me dit te taper ceci dans MyDocument.m:

- (NSData *)dataRepresentationOfType:(NSString *)aType
{
    NSRange range = NSMakeRange(0, [[textView textStorage] length]);
    return [textView RTFDFromRange:range];
}

- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType

{
  fileData = data;
  return fileData != nil;
}

- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
    [super windowControllerDidLoadNib:aController];
    if ( fileData != nil )
    {
        [textView replaceCharactersInRange:NSMakeRange(0, 0) withRTFD:fileData];
    }
}



Mais quand je "build & go " dans xcode, il me sort des erreurs au niveau des {

merci de m'aider

Réponses

  • muqaddarmuqaddar Administrateur
    17:44 modifié #2
    Salut iFlighT et bienvenue.

    Tu peux nous décrire les erreurs qu'il te renvoie ?
    (p-e des erreurs de car invisibles...)
  • ChachaChacha Membre
    17:44 modifié #3
    Bonjour,

    A priori je ne vois pas d'erreur de syntaxe. Dans ce cas, cela signifie qu'il y a des erreurs ailleurs dans ton projet (par exemple dans un fichier .h), et qu'elles se répercutent jusqu'ici.
    Essaye de mettre en commentaire cette partie du code : si les erreurs sont toujours là , alors ce n'est pas ce code le fautif.
  • iFlighTiFlighT Membre
    17:44 modifié #4
    merci d'avoir repondu si vite :)

    Les erreurs sont les suivantes :

    /Users/iFlighT/simpletexteditor/MyDocument.h:15: error: parse error before "NSData"
    /Users/iFlighT/simpletexteditor/MyDocument.m:18: error: parse error before '{' token
    /Users/iFlighT/simpletexteditor/MyDocument.m:24: error: parse error before '{' token


    Et dans MyDocument.h j'ai ceci:

    @interface MyDocument : NSDocument
    {
    id IBOutlet textView
    NSData * filedata
    }
    @end


    Comment peut-on voir les car invisibles ??
  • muqaddarmuqaddar Administrateur
    17:44 modifié #5
    Déjà , tu peux ajouter les point virgule dans le .h, et mettre id après IBOutlet :

    @interface MyDocument : NSDocument
    {
    IBOutlet id textView;
    NSData * filedata;
    }
    @end
  • iFlighTiFlighT Membre
    17:44 modifié #6
    Ah merci il me reste plus qu'une erreur :)

    /Users/iFlighT/simpletexteditor/MyDocument.m:11: fatal error: method definition not in class context

    Pour la ligne : - (NSData *)dataRepresentationOfType:(NSString *)aType

  • ChachaChacha Membre
    17:44 modifié #7
    "method definition not in class context"

    le compilateur essaye de te dire que tu as écrit le code de certaines méthodes en dehors du champ d'implémentation de la classe.
    A tous les coups, tu as oublié de mettre "@implmentation MyDocument...@end"; dans le fichier .m

    Explications :

    Dans le .h, tu déclares des variables, des méthodes (c'est uniquement informel)

    @interface MyDocument : NSObject //dans la classe MyDocument (qui hérite de NSObject)...
    {
    IBOutlet id textView; //on trouve une variable textView
    NSData * filedata; //et une variable filedata
    }

    //et voici en outre les méthodes de MyDocument
    - (NSData *)dataRepresentationOfType:(NSString *)aType;
    - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType;
    - (void)windowControllerDidLoadNib:(NSWindowController *) aController;


    @end //fin de la déclaration de MyDocument

    Dans le .m, tu écris le code
    #import "MyDocument.h" //importer les déclarations informelles

    @implementation MyDocument //voici le code des méthodes annoncées :
    - (NSData *)dataRepresentationOfType:(NSString *)aType
    {
    ...
    }

    - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
    {
    ...
    }

    - (void)windowControllerDidLoadNib:(NSWindowController *) aController
    {
    ...
    }

    @end //ça y est, on a fini la partie @implementation
  • iFlighTiFlighT Membre
    17:44 modifié #8
    Un grand merci a vous deux, ca marche maintenant  :)
  • iFlighTiFlighT Membre
    17:44 modifié #9
    Oups j'ai parlé un peut vite  ::)

    Quand j'avais tout mis ( voir aucune ligne de code ) mon application se lancait correctemetn et j'avais ma fenetre au lancement.

    Par contre maintenant ( avec le code ) plus d'erreur, mais quand je lance l'application je n'ai plus la fenetre a l'ouverture, et si je fait 'new' il ne m'ouvre pas de fenetre.
  • Eddy58Eddy58 Membre
    17:44 modifié #10
    Est-ce que ton option "Visible At Launch Time" est bien cochée dans les attributs de ta fenêtre dans IB ? :)
  • iFlighTiFlighT Membre
    17:44 modifié #11
    dans 1099945282:

    Est-ce que ton option "Visible At Launch Time" est bien cochée dans les attributs de ta fenêtre dans IB ? :)


    Oui
Connectez-vous ou Inscrivez-vous pour répondre.