On May 14, 2010, at 02:13, Billy Flatman wrote: > I'm trying to encode a 'Class' type parameter in an class implementing the > NSCoding interface, but I keep getting the error 'cannot encode (void *) > value: <c0860200 01000000>'. > > Here's an extract the class I'm encoding: > > @interface IFNode : NSObject <NSCoding> { > Class persistentObjectClass; > } > @property (nonatomic, retain) Class persistentObjectClass; > @end > > @implementation IFNode > @synthesize persistentObjectClass; > - (void) encodeWithCoder: (NSCoder *) encoder { > NSValue* value = [[NSValue valueWithPointer:persistentObjectClass] > retain]; > [encoder encodeObject:value forKey:@"Class"]; > }
NSValue doesn't support encoding for this sort of value: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Archiving/Tasks/codingctypes.html What are you really trying to do? If you're trying to have something persist across uses of your application, it makes no sense to archive the class object pointer. Archive the class name instead (via NSStringFromClass). If you're just trying to pass the class pointer around within the application (like for dragging or putting something on a private pasteboard), you could probably do it by casting the pointer to a number for encoding, and cast it back to a pointer on decoding, but you're likely still far better off archiving the class name instead. _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com