2010-11-17 18 views
0

J'ai la méthode suivante pour ouvrir des documents.Ouvrir des documents avec Cocoa

- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError 
{ 
NSString *stringData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

[editorView setString:stringData]; 

if (outError != NULL) { 
    *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; 
} 

return YES; 
} 

Il semble bien que le document et ses vues ne sont pas chargés jusqu'à ce que YES est retourné si je ne peux pas le contenu mis de l'affichage du texte parce que son pas encore chargé. Est-ce que quelqu'un sait d'un travail autour de cela?

Merci à l'avance

Répondre

3

cacao suit le modèle de conception modèle-vue-contrôleur (MVC). Vous devriez lire à ce sujet in the conceptual documentation.

Ne stockez pas les informations relatives à votre modèle dans votre vue. Autrement dit, votre objet document doit contenir le contenu du fichier chargé (dans une variable d'instance). Plus tard, lorsquesi -windowControllerDidLoadNib est appelée (ce qui signifie qu'une copie de l'interface utilisateur du document a été chargée pour le document), vous pouvez mettre à jour votre vue avec le contenu du fichier. L'approche de NSDocument est utile car il existe un certain nombre de circonstances dans lesquelles vous pourriez vouloir instancier le document mais pas son interface utilisateur (pensez scripting, importation, requête importateur Spotlight, impression instantanée, ...).