pb avec NSWindow workForSheet

POUNAS

Membre confirmé
3 Juillet 2011
35
0
Bonjour à toutes et à tous,

un autre problème à résoudre.

dans le cadre de la gestion des erreurs lors du parsing d'un fichier XML, on est amené à utiliser la méthode :

Bloc de code:
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
En général, on fait afficher une alerte afin d'avertir l'utilisateur qu'il y a une erreur de parsing.

voici le code qui est recommandé par apple :

Bloc de code:
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSWindow *modWin = [self windowForSheet];
    
    if (!modWin) modWin = [NSApp mainWindow];
    NSAlert *parserAlert = [[NSAlert alloc] init];
    
    [parserAlert setMessageText:@"Parsing Error!"];
    
    [parserAlert setInformativeText:[NSString stringWithFormat:@"Error %i,
                                     Description: %@, Line: %i, Column: %i", [parseError code],
                                     [[parser parserError] localizedDescription], [parser lineNumber],
                                     [parser columnNumber]]];
    
    [parserAlert addButtonWithTitle:@"OK"];
    
    [parserAlert beginSheetModalForWindow:modWin modalDelegate:self
                           didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
                              contextInfo:nil];
    [parserAlert release];
}

je bosse sur un Framework (+ target tests).

j'ai un message d'erreur qui me stipule que "la méthode windowForSheet" est introuvable ! alors que j'ai fait (je pense ?) les bons imports.

ai-je oublié un import ?

avez - vous svp une idée?

merci par avance.
 
Quelle classe ton self ? NSDocument ? :confused:

je bosse sur une classe qui n'est pas une classe de type NSDocument ou autre classe de type "graphique".

c'est une classe qui a pour rôle de parser un fichier XML.
voici sa définition :

Bloc de code:
@interface RegisterEntityManager : NSObject <NSXMLParserDelegate> {

dans le cas d'une erreur de parse dans le fichier XML, la classe va appeler la méthode

Bloc de code:
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { ...

en fait je souhaite juste afficher dans cette méthode, une alerte en disant "gros problème avec fichier XML", logger un message et puis quitter l'application.

pouvez - vous svp m'indiquer la démarche à suivre en ce qui concerne l'affichage et la gestion de cette alerte.

merci par avance.

Cette classe est embarquée dans un framework, si le fichier XML est corrompu, il faut arrêter l'application.
 
Il faut pas insérer de code traitant de l'aspect IHM dans un objet de traitement de données. Tu as en paramètre de ta fonction un objet de type NEError. Utilise le pour remonter ton erreur jusqu'à un objet qui pourra afficher l'alerte (fenêtre ou document). Lui aura accès à un NSWindow qui pourra ouvrir la sheet.