Я всегда использовал NSDictionaries со строками в качестве ключей, и почти все примеры в Интернете / books / etc. подобные. Я решил, что попробую это с пользовательским объектом для ключа. Я ознакомился с реализацией метода copyWithZone и создал следующий базовый класс:
@interface CustomClass : NSObject
{
NSString *constString;
}
@property (nonatomic, strong, readonly) NSString *constString;
- (id)copyWithZone:(NSZone *)zone;
@end
@implementation CustomClass
@synthesize constString;
- (id)init
{
self = [super init];
if (self) {
constString = @"THIS IS A STRING";
}
return self;
}
- (id)copyWithZone:(NSZone *)zone
{
CustomClass *copy = [[[self class] allocWithZone: zone] init];
return copy;
}
@end
Теперь я пытаюсь просто добавить один из этих объектов с простым строковым значением, а затем вернуть строковое значение для входа в консоль:
CustomClass *newObject = [[CustomClass alloc] init];
NSString *valueString = @"Test string";
NSMutableDictionary *dict =
[[NSMutableDictionary alloc] initWithObjectsAndKeys:valueString, newObject, nil];
NSLog(@"Value in Dictionary: %@", [dict objectForKey: newObject]);
// Should output "Value in Dictionary: Test string"
К сожалению, в журнале отображается (ноль). Я почти уверен, что упускаю что-то действительно очевидное и чувствую, что мне нужен еще один набор глаз.