2012-01-11 17 views
0

我想創建一個NSMutableDictionary,它在一個特定的對象上鍵入並映射到一個NSNumber。該對象來自第三方庫並且不實現copyWithZone方法。編譯器可以理解抱怨無法識別的選擇(copyWithZone)被髮送到對象,使用的代碼:hacky使用NSMutableDictionary映射不可複製的對象

[dictionary setObject:[NSNumber numberWithInt:index] forKey:someObject]; 

因爲我不想創建一個第三方庫對象我自己的copyWithZone方法,我不該我不需要知道如何複製,我遠離創建實現該方法的類別。

我的黑客是通過將其轉換爲long long存儲在一個NSNumber的內存地址:

[dictionary setObject:[NSNumber numberWithInt:index] forKey:[NSNumber numberWithLongLong:(long long)someObject]]; 

檢索值:

NSNumber *indexNumber = [dictionary objectForKey:[NSNumber numberWithLongLong:(long long)someObject]]; 

這似乎非常的hackish給我。什麼是更清晰的方式來處理對象到int的映射?

回答