• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Encode a 'Class' type using NSValue
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Encode a 'Class' type using NSValue


  • Subject: Re: Encode a 'Class' type using NSValue
  • From: Quincey Morris <email@hidden>
  • Date: Fri, 14 May 2010 02:34:09 -0700

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 (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

  • Follow-Ups:
    • Re: Encode a 'Class' type using NSValue
      • From: Billy Flatman <email@hidden>
References: 
 >Encode a 'Class' type using NSValue (From: Billy Flatman <email@hidden>)

  • Prev by Date: Re: iPhone: viewDidAppear called, Default.png still visible
  • Next by Date: [Solved]: Noise in CALayer
  • Previous by thread: Encode a 'Class' type using NSValue
  • Next by thread: Re: Encode a 'Class' type using NSValue
  • Index(es):
    • Date
    • Thread