0
我定义类用户和用户拥有的丝束构件可变因素 - >
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(ID集合)
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?哪里错了?