2012-04-29 21 views
7

Estoy tratando de entender cómo funcionan las cosas en Cocoa, pero estoy luchando con una cosa. Vi http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html y http://casperbhansen.wordpress.com/2010/08/15/dev-tip-nibless-development/ y creo que entendí algo.Tutorial/ejemplo de una aplicación mínima basada en documentos

Ahora, me gustaría hacer lo mismo, pero para una "aplicación basada en documentos". Por favor, ¿alguien sabe de un tutorial o ejemplo similar a los anteriores? Alternativamente, ¿qué debo hacer para que funcione? Creo que necesito crear NSDocumentController, pero ¿cómo se relaciona con NSApplication? ¿Y creo NSDocument desde allí? Francamente, estoy un poco perdido ...

Respuesta

10

¡Fui yo hace seis meses! No he encontrado un tutorial decente tampoco, pero empecé con un nuevo proyecto utilizando la plantilla de proyecto Xcode defecto:

enter image description here

Empecé con la instalación de Xcode genera para usted cuando se inicia un nuevo proyecto e implementé pieza por pieza a medida que avanzaba. Hay una buena lectura aquí en Stackoverflow sobre el uso de las diversas clases de controlador, pero esto es lo que hice: clase

  • El documento, generado por Xcode, es mi controlador de nivel superior. No uso NSDocumentController.
  • Cada caso de uso de mi aplicación tiene un número de NSViewControllers que administran las diversas vistas del caso de uso. Estos controladores se intercambian y desconectan dinámicamente. Los controladores de nivel superior son gestionados por la clase NSDocument (NSPersistentDocument en mi caso cuando uso Core Data).

No soy de ninguna manera un experto, por lo que me corrigen por mejores enfoques, pero hasta ahora esta configuración ha sido fácil de trabajar, fácil de mantener y fácil de ampliar.

Nota: El uso de Core Data es opcional, pero con el tiempo he llegado a amarlo y creo que es muy poderoso y un gran ahorro de tiempo. Cuando decida no utilizar Core Data, la configuración anterior seguirá funcionando, pero tendrá que administrar sus propios datos.

EDITAR: Esta post explica la relevancia de NSDocumentController.

EDIT2: This one de Apple es una lectura interesante también.

EDIT3: Necesita NIB (o XIB como se llaman ahora) ya que contienen la interfaz de usuario de su aplicación. Usted tira de ellos en medio de un controlador de vista (subclase NSViewController):

NSString *aControllerName = [anIdentifier stringByAppendingString: @"ViewController"]; 
NSString *aNibName = [anIdentifier stringByAppendingString: @"View"]; 
Class aControllerClass = NSClassFromString(aControllerName); 
[self setCurrentController: [[aControllerClass alloc] initWithNibName: aNibName bundle: [NSBundle mainBundle]]]; 

En lo anterior anIdentifier podría ser Department, lo que instanciar el DepartmentViewController y cargar el nombre XIB DeparmentView.

Puede utilizar listas para almacenar sus datos, pero eso no es un requisito. Hay muchas maneras de almacenar sus datos de aplicaciones. Tendrás que leer sobre las diversas arquitecturas que tiene Apple y tomar tus propias decisiones.

+0

Intento encontrar la manera más simple y canónica, realmente me gustaron los tutoriales anteriores ya que explican muy bien el funcionamiento interno. Por favor, ¿te importaría publicar algún código? ¿Por qué no usaste 'NSDocumentController'? Y si quisiera usarlo, ¿dónde debería ponerlo? Creo que tendré solo una vista, una ventana para cada documento. –

+0

Agregué una explicación sobre el uso de NSDocumentController en una pregunta previa de mí mismo. – Roger

+0

@EcirHana: Vea también mi comentario sobre la respuesta aceptada en la pregunta de Roger. –

Cuestiones relacionadas