On 5/8/12 2:35 PM, Alex Zavatone wrote:
> Well, I had a similar problem saving the information to a JSON file
> and had to rebuild the dictionary without the CLLocationCoordinate2D
> struct, before NSJSONSerialization would serialize the dictionary.
> 
> The reason I think it's a struct is that's how it's defined in
> CLLocation.h and right now in the debugger, annotation is showing as
> (struct objc_object * const), which sorta conflicts with what you
> wrote (TTBOMK).
> 
> Here are the details from CLLocation.h:

No one disputes that CLLocationCoordinate2D is a struct.  What Jens is
saying is that you can't store an unwrapped struct in a Cocoa collection
- be it a dictionary, array, or set.

What's getting lost in translation here is that -annotations is an array
of objects of type id <MKAnnotation>.

What sort of object conforming to MKAnnotation are you adding to your
annotations array?  Whatever it is, it must have a -coordinate property.
 It is *this* property this is a CLLocationCoordinate2D struct.  This is
how the data is getting stored in a Cocoa collection.

In any event, I don't see how you could directly serialize your
annotation object to a JSON object for exactly the reason Jens described
(i.e. type incompatibility).

If you need to convert to JSON you could, for example, write an
NSValueTransformer that converts your id <MKAnnotation> to an
NSDictionary that is compliant with NSJSONSerialization requirements.

Assuming that you are planning on using JSON to communicate with a web
service, though, you will need to determine what data structure the
service is expecting and emit that.


-- 
Conrad Shultz

Synthetiq Solutions
www.synthetiqsolutions.com
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to