将哈希转换为NSNumberWithInt不一致?

时间:2012-01-24 20:08:19

标签: objective-c hash key-value

我将对象的哈希值存储为该对象中的唯一标识符,如下所示:

[myObj setValue:[NSNumber numberWithInt:[myObj hash]] forKey:@"ID"];

但是当检索该键的值时,该值不再与哈希值一致,即此代码:

NSLog(@"[myObj hash] %i",[myObj hash]);
NSLog(@"[myObj hash] NSNumber %@",[NSNumber numberWithInt:[myObj hash]]);
[myObj setValue:[NSNumber numberWithInt:[myObj hash]] forKey:@"ID"];
NSLog(@"myObj ID %@",[myObj valueForKey:@"ID"]);

产生类似于:

的输出
[myObj hash] -976941568
[myObj hash] NSNumber -976941568
myObj ID 3584

关于哈希和/或键/值对的哪些基本内容我明显不明白?

汤普森

[编辑]

请原谅我的新手礼仪! myObj是一个NSManagedObject,并且是键/值兼容的,因此ID只是我动态创建的一个键。

1 个答案:

答案 0 :(得分:1)

hash方法返回一个无符号整数,试试这个

[NSNumber numberWithUnsignedInteger:[myObj hash]];
相关问题