At this point, you’ve implemented an application that keeps track of an array of objects, takes care of undo, and handles saving and loading from a file. As you can imagine, there are an awful lot of applications like the one you just wrote.
Apple decided to make this type of application extremely easy to write:
NSArrayController will hold on to an array of objects.
Bindings will eliminate much of the glue code that would be necessary to keep the model objects in sync with the views.
NSManagedObjectContext will observe the instance variables of your data objects, take care of undo for you, and take care of loading and saving the data.
So, the punchline is: Using Core Data and bindings, the RaiseMan application that you have ...