Code de base pour une "Non Document Based" App
Tiff
Membre
Que pensez-vous de :
<br />- (id)init {<br /> self = [super init];<br /> // création, si besoin, du dossier DvdThèque dans la Bibliothèque de l'utilisateur ; merci Eddy58<br /> // ne pas oublier de remplacer ~ par le dossier principal de l'utilisateur /Users/jerome avec stringByExpandingTildeInPath<br /> BOOL repExist;<br /> if (![[NSFileManager defaultManager] fileExistsAtPath: [@"~/Library/Application Support/DvdThèque" stringByExpandingTildeInPath] isDirectory:&repExist] && repExist]);<br /> [[NSFileManager defaultManager]<br /> createDirectoryAtPath: [@"~/Library/Application Support/DvdThèque" stringByExpandingTildeInPath] attributes: nil];<br /> NSString *monFichier = [@"~/Library/Application Support/DvdThèque/DvdThèqueData" stringByExpandingTildeInPath];<br /> maListeDeFilms = [[NSMutableArray alloc] initWithArray:[NSUnarchiver unarchiveObjectWithFile: monFichier]];<br />Â Â // si le fichier n'existe pas, initialisation de maListeDeFilms<br /> if (maListeDeFilms == nil) maListeDeFilms = [[NSMutableArray alloc] init];<br /> return self; }<br /> <br />- (BOOL)applicationShouldTerminateAfterLastWindowClosed: (NSApplication *)theApplication {<br /> return YES; } // merci Mpergand<br /> <br />- (NSApplicationTerminateReply)applicationShouldTerminate: (NSApplication *)sender {<br /> if ([self sauvegarde]) return NSTerminateNow; // merci ClicCool<br /> NSLog(@"Eh ! Toi là -haut ! Regarde donc pourquoi je ne peux pas enregistrer !");<br /> return NSTerminateCancel; } // Heureusement que Finder permet de Forcer à quitter !<br /> <br />- (BOOL)sauvegarde {<br />Â Â NSString *monFichier = [@"~/Library/Application Support/DvdThèque/DvdThèqueData" stringByExpandingTildeInPath];<br /> return [NSArchiver archiveRootObject: maListeDeFilms toFile: monFichier]; }<br /> <br />- (void)dealloc {<br /> NSLog(@"Si ce message s'affiche, j'arrête de bosser et je me consacre entièrement à Cocoa."); // merci Tiff<br /> [maListeDeFilms release]; <br /> [super dealloc]; }<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Mais j'avais eu le temps de lire ton message avant que tu ne le modifies ;D
J'ai ajouté dans l'exemple ci-dessus isDirectory: c'est quand même plus sûr. :-\
En cas d'échec de la sauvegarde, faut pas empécher l'appli de quitter en fait.
1- Il faut juste au minimum, avant de quitter, prévenir l'utilisateur que la sauvegarde a échouée (la moindre des choses ).
2- Si tu peux, le mieux est d'être le plus explicite possible dans l'alerte à l'utilisateur en spécifiant la cause de l'échec.
3- Le plus souhaitable étant également dans cette alerte de lui proposer une solution à son problème et une oportunité de la mettre en pratique avant que l'appli quitte vraiment
Exemple d'alerte utile:
"Les données n'ont pu être sauvegardées car le volume "monCherDD" est saturé.
"Essayez de supprimer des fichiers de ce volume et recommencez"
avec les boutons:
- "tant pis quitter quand même"
- "oups, ne quittez pas mademoiselle, je vais voir ce que je peux faire"
Non non, ça me plait bien en fait
Super ton idée de regrouper ici les méthodes à implémenter pour gérer des données sur disque dans une appli "non document based".
C'est toi qui t'es plaint, à juste titre, du côté peu cool d'une appli qu'il faut parfois forcer à quitter pour de bêtes soucis de sauvegarde non gérés. ;D
8)