If you're able to store dictionaries, I would do it in a similar fashion:
Use introspection to retrieve the object properties. First, make sure every property is data type only, as I'd only support objects one level deep. Then, move from property to property storing them key-value form like you would a dictionary, using the name as the key. Not too bad.
The only thing I'm not sure of is if you can use introspection to create an object by a string name... I don't believe so. If you could you'd simply store the type name along with the other values and use it to reconstruct the object. This isn't a catch all for all objects, but it would certainly handle single-level objects.
A thought. I honestly don't know if it would work on the retrieval end.. I doubt it.

The class I'm using, PLIST, has a sort of means for constructing and deconstructing objects into and from dictionaries. I use a key to store the entire key-value array, then use the key to tell myself what it was. It's a bit of extra work, but it does the job well.
Thanks, Tristan!