Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

nashyo

macrumors 6502
Original poster
Oct 1, 2010
299
0
Bristol
I'm currently being introduced slowly to encoding in Objective C, and I have a fundamental question to ask.

Why would an Object orientated programmer want to encode an object to the file system, instead of create an array or dictionary of objects?

I know there's a sensible answer to this, so please don't think I'm contesting the logic of it.

Thanks
Rob
 
Are you asking why would someone want to "save" an object to load again later?

I was wondering the same thing.

"Why would an Object orientated programmer want to encode an object to the file system"

Sounds like archiving an object to disk.
 
I'm currently being introduced slowly to encoding in Objective C, and I have a fundamental question to ask.

Why would an Object orientated programmer want to encode an object to the file system, instead of create an array or dictionary of objects?

I know there's a sensible answer to this, so please don't think I'm contesting the logic of it.

Thanks
Rob

The way encoding works, the NSKeyedArchiver asks the root object to encode itself. If the root object's -encodeWithCoder: method involves encoding any objects it owns (ivars), they will be encoded into the graph, and any objects those own or reference will be encoded recursively until the entire logical content of the root object is mapped. One advantage would be that no object is encoded more than once, the archiver just encodes cross-references. All this goes into a data object in the form of a binary plist which can then be written to a file or stored in a user defaults entry.

If the complementary -decodeWithCoder: methods are written correctly, NSKeyedUnarchiver can restore the entire object graph using the data object that was archived. This technique allows a much richer and more complex structure to be saved and restored easily and efficiently than you might be able to do with an array or dictionary. Once decoded, you program state is essentially fully restored to what it was when you saved it (except, usually, without the undo stack).

If you look at the documentation for NSArray or NSDictionary, you will see that there are strict limitations on what they can write to a file; encoding lets you get around these limitations.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.