У меня есть класс, с которым я инкапсулирую ABRecordID, и когда он используется в качестве ключа для добавления в NSMutableDictionary, я получаю исключение времени выполнения:
"NSInvalidArgumentException: ***
- [MyRecordId copyWithZone:]: нераспознанный селектор отправлен
Экземпляр "
MyRecordId объявлен как:
@interface MyRecordId : NSObject {
ABRecordID abRecordId;
}
-(id)initWithId:(ABRecordID)anABRecordId;
@property (nonatomic) ABRecordID abRecordId;
@end
Добавление в словарь:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
MyRecordId *recordId = [[MyRecordId alloc] initWithId:anABRecordId];
[dict setObject:@"hello" forKey:recordId];
Последняя строка вызывает исключение. Я знаю, что вы не можете хранить не-объектные типы в качестве ключей для словаря, но я подумал, что завершение его в производном классе NSObject сделает все в порядке.
Разве я не должен хранить ABRecordID в других объектах? Должен ли я делать что-то еще?