I have a class that I'm encapsulating ABRecordID with and when it's used as a key to add to an NSMutableDictionary, I get the run-time exception:
"NSInvalidArgumentException: *** -[MyRecordId copyWithZone:]: unrecognized selector sent to instance"
MyRecordId declared as:
@interface MyRecordId : NSObject {
ABRecordID abRecordId;
}
-(id)initWithId:(ABRecordID)anABRecordId;
@property (nonatomic) ABRecordID abRecordId;
@end
Adding to dictionary:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
MyRecordId *recordId = [[MyRecordId alloc] initWithId:anABRecordId];
[dict setObject:@"hello" forKey:recordId];
The last line causes the exception.. I know that you can't store non-object types as keys for a dictionary but I thought that wrapping it up in NSObject derived class would make it okay.
Am I not supposed to store ABRecordID in other objects? Should I be doing something else?