определяет класс User и пользователь имеет член буксировки varibles ->
NSString* name , NSSString* pass
И я хочу, чтобы хранить ихNSSet
Conllection так, я переписать - (NSUInteger
) метода хеширования как следующегоКак правильно переопределить метод HashCode?
-(NSUIntegar) hash
{
NSLog(@"Hash Method %@",[self class]);
NSUInteger nameHash = name == nil ? 0 : [name hash];
NSUInteger passHash = pass == nil ? 0 : [pass hash];
return nameHash * 31 + passHash;
}
main.m файл
NSSet* set = [NSSet setWithObjects:
[[User alloc] initWithName:@"nike" pass:@"123"],
[[User alloc] initWithName:@"nool" pass:@"456"],
[[User alloc] initWithName:@"boow" pass:@"124"],
[[User alloc] initWithName:@"enla" pass:@"124"],
[[User alloc] initWithName:@"boow" pass:@"124"],//same as member 3
nil];
NSLog(@"set count = %ld",[set count]);
NSLog(@"%@",NSCollectionToString(set));
NSCollectionToString (идентификатор коллекции)
NSString* NSCollectionToString(id collection)
{
NSMutableString* result = [NSMutableString stringWithFormat:
@"["];
for (id object in collection) {
[result appendString:[object description]];
[result appendString:@","];
}
NSUInteger len = [result length];
[result deleteCharactersInRange:NSMakeRange(len - 1, 1)];
[result appendString:@"]"];
return result;
}
Но консольный выход: установить счетчик = 5 Почему не 4? где ошибка?