2012-02-20 18 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];