2012-01-24 81 views
0

我該對象中存儲對象的哈希值作爲唯一的標識符,像這樣:將散列轉換爲NSNumberWithInt不一致?

[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就是我創建的一個關鍵。

+0

每當你遇到意外的高幅度負數,應立即檢查是否正在顯示一個無符號的價值,如果它是簽名。 –

回答

1

散列方法返回一個無符號整數,試試這個,而不是

[NSNumber numberWithUnsignedInteger:[myObj hash]];