Question de debutant, save/load
iFlighT
Membre
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
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
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu peux nous décrire les erreurs qu'il te renvoie ?
(p-e des erreurs de car invisibles...)
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.
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 ??
@interface MyDocument : NSDocument
{
IBOutlet id textView;
NSData * filedata;
}
@end
/Users/iFlighT/simpletexteditor/MyDocument.m:11: fatal error: method definition not in class context
Pour la ligne : - (NSData *)dataRepresentationOfType:(NSString *)aType
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
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.
Oui