Re: Loading a Document Based Application
Re: Loading a Document Based Application
- Subject: Re: Loading a Document Based Application
- From: David P Henderson <email@hidden>
- Date: Fri, 15 Jun 2001 23:17:27 -0400
On Friday, June 15, 2001, at 07:10 , Ivan Myrvold wrote:
I have read through all the documentation I have for a Document based
application, to see if it can solve my problem. Now I think I need some
help from you, on how to best tackle this:
I used the Vermont Recipes as a recipe for my application, and I have
come to the part where I need to load data from file, and put the data
in the TableView on my MyDocument.nib. The recipes haven't handled this
yet...
Actually, it has. VR uses MySettings as its data model, MyDocument as
its model controller, MyWindowController as its view controller and
MyDocument.nib as its view. VR clearly shows how to get data from the
model into the view. Look at the interaction between the 3 classes and
the nib. A table is just another type of control like the checkboxes,
buttons et al which populate VR.
[snip]
Now, my dilemma is: The data and the methods that need the data are in
two different Classes. Have I in my ignorance overseen something
significant here? Is this the "right" way to do this? I know there are
an infinite number of ways to transfer data from file to the
application, I have seen that from examples posted on this list, but I
thought I would follow the wonderful Vermont recipes "way" of
structuring the application.
When using the Model-View-Controller pattern, the model and the view
should be fairly independent using the controller to communicate changes
in state and data. In VR, the controller is further factored into a data
controller and a view controller with each controller knowing how to
communicate. MyDocument knows about the data model, and it knows about
any view controllers for itself. MyWindowController knows about its
"Document" and the views it controllers. So if you've set up proper
accessors for your instance variables, you can get data contained from
the model to the view like so in tableView:objectValueForTableColumn:row:
id doc = [self document]; // self is instance of MyWindowController
NSArray *dataArray = [NSArray arrayWithArray:[doc dataModel]]; // get
the document's data via the accessor
id arrayItem = [dataArray objectAtIndex:row]; // Now you have the object
stored at the row index in your array
Dave
--
Chaos Assembly Werks
"Nothing is too good to be true, except, perhaps, the morality of a
bishop."
- Israel Zangwill