Unfortunately, cocoa doesn't know which variables in your custom classes are important, and which are calculated or temporary. You need to code the methods for NSCoder so that the right variables get saved.
The good news is that if your custom objects conform to the NSCoder protocol, it's easy to use NSKeyedArchiver to save it to disk. You don't have to write your own code to write every variable to disk.
The Archives and Serializations Programming Guide should help
Archives and Serializations Programming Guide for Cocoa: Introduction