it shouldn't be that complicated. First of all you should make sure you really need to save all that information. I'm guessing you are.
NSUserDefaults isn't so hard to use at all. In your controller you need an ivar
NSUserDefaults* userDefaults
Inside awakeFromNib I used the following line:
userDefaults = [[NSUserDefaults standardUserDefaults] retain];
this retrieves any saved data and saves it when the app quits (I think...)
Now the way you save and retrieve data is using a NSString key, like @"myArray". Then you say something like: NSArray* array = [userDefaults objectForKey @"myArray"]; this will retrieve the array in question.
At some point you have to save the data. You can either do it every time you make a change or at the very end of the program (i.e. in the terminated app method... however if the app crashes or quits unexpectedly this isn't always called). Anyhoo you just want to save it like so:
[userDefaults setObject: array forKey: @"myArray"]; this saves the array in a set block of memory under the key "myArray" (key can be anything really, just don't lose your key!

)
There is lots more detail in the apple documentation.