On Fri, Dec 12, 2008 at 3:43 PM, Gustavo Pizano <[email protected]> wrote: > Hello. I want to send the following an object in a drag-n-drop operation, so > I need to transform it to a NSData > > so I have this object > > @interface Ship : NSObject <NSCoding> { > > int size; > int impacts; > ShipLocation * location; > CALayer * shipImageLayer; > > } > > now, I was reading that I must implement <NSCoding> and implement the > -(id)initWithCoder:(NSCoder *)coder and -(void)encodeWithCoder:(NSCoder > *)coder methods, so far so good, > then I can use the encodeObject: forKey method of NSCoder class. so I will > have the following > > -(id)initWithCoder:(NSCoder *)coder > { > [coder encodeInt:size forKey:@"size"]; > [coder encodeInt:impacts forKey:@"impacts"]; > > > } > > but after I dunno how to code the location and the shipImageLayer? I guess > ShipLocation should implement <NSCoding> also and encode its attributes, > but in shipLocation there is also a CALayer, so I still have the question on > how to do it with a CALayer.
When you get to an object, you can simply encode it using [coder encodeObject:obj forKey:@"key"]. Of course obj must implement NSCoding as well, otherwise this will not work. For your own classes, you'll need to implement NSCoding for everything that will get encoded. CALayer already implements NSCoding so there's nothing tricky for that one. Mike _______________________________________________ Cocoa-dev mailing list ([email protected]) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
