Re: Serializing NSDictionary for network transfer
Re: Serializing NSDictionary for network transfer
- Subject: Re: Serializing NSDictionary for network transfer
- From: Wim Lewis <email@hidden>
- Date: Wed, 07 May 2014 11:38:15 -0700
On 7 May 2014, at 11:17 AM, Carl Hoefs wrote:
> Newb questions re: serializing an NSDictionary for network transfer to another process. I've read over the Apple documentation, but it seems to detail the methods involved but not how to use serialization, and some methods seem to require writing archives or plist files to disk. So, I must be approaching this all wrong...
>
> (1) I see that NSDictionary has an encoding method:
>
> - (void)encodeWithCoder:(NSCoder *)coder;
>
> but this returns (void), which is puzzling to me. I would expect it to return (void *) to a malloced region containing the serialization. Where does the object serialization reside, and how do I access it?
It is accumulated in the coder. NSCoder is an abstract class; the concrete class you're using (eg NSKeyedArchiver) will have a way to get the serialized data in or out.
NSKeyedArchiver also has a convenience method, +archivedDataWithRootObject:, for the common case of writing a single object (and recursively any objects it references/contains) and getting the data out.
Depending on what is *in* your NSDictionary, though, a less opaque serialization format might be better, such as one of the property-list formats (see NSPropertyListSerialization) or even JSON. These formats can only hold a small, non-extensible set of types, and can't encode recursive structures or preserve the sharedness of parts of the object graph, but have the significant advantage that they are easier to inspect and are easier to keep decoupled from implementation details of your app.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden