2012-02-20 51 views
4

今天我的大腦讓我失望。我知道這應該是一個簡單的,但我只是沒有看到它。ios NSUinteger輸入'id'

CGFloat *minutes = [self.displayData objectForKey:index]; 

不相容整數指針轉換髮送 'NSUInteger'(又名 '無符號整型')至類型的 'id'

index是在一個循環中一個NSUInteger的參數,(0 1 2 3等)

我該如何克服這一點?謝謝。

+2

'objectForKey:'='objectAtIndex:!' – 2012-02-20 19:55:57

回答

7

字典等待一個對象作爲鍵(id)而不是一個純整數(NSUInteger)。

嘗試將整數包裝在NSNumber對象中。

CGFloat *minutes = [self.displayData objectForKey:[NSNumber numberWithUnsignedInteger:index]]; 
0

你不應該使用指針這樣的:

CGFloat minutes = [self.displayData objectForKey:index]; 
-3

簡單的問題。只是不要使用NSUIntegrer。取而代之的是,請執行下列操作:

id index;//then set the index 
2

的-objectForKey:方法返回id類型的值,但是你要賦值給一個CGFloat的*,這是不符合id因爲CGFloat的ISN兼容一個班級。如果您知道從字典中檢索的對象是某種類型(例如NSNumber),則可以在獲取它時採取措施將其轉換爲CGFloat。

,你試圖使用一個int作爲一個字典的關鍵,但字典要求他們的鍵也是對象。如果您想通過索引訪問您的對象,請將它們存儲在數組中而不是字典中。

全部放在一起,你有這樣的事情:

// after changing the displayData to an array 
NSNumber *number = [self.displayData objectAtIndex:index]; 
CGFloat minutes = [number floatValue];