ios NSUinteger输入'id'

时间:2012-02-20 19:53:21

标签: ios

我的大脑今天让我失望了。我知道这必须是一个简单的,但我只是没有看到它。

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

不兼容的整数到指针转换将'NSUInteger'(又名'unsigned int')发送到'id'类型的参数

index是循环中的NSUInteger,(0 1 2 3等)

我如何通过这个?感谢。

4 个答案:

答案 0 :(得分:8)

字典等待对象作为键(id)而不是普通整数(NSUInteger)。

尝试将整数包装在NSNumber对象中。

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

答案 1 :(得分:2)

-objectForKey:方法返回类型为id的值,但您尝试将其分配给与id不兼容的CGFloat *,因为CGFloat不是类。如果您知道从字典中检索的对象是某种类型,例如NSNumber,则可以采取措施将其转换为CGFloat。

同样,您正在尝试将int用作字典中的键,但字典也要求它们的键也是对象。如果要通过索引访问对象,请将它们存储在数组中而不是字典中。

总而言之,你会有这样的事情:

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

答案 2 :(得分:0)

您不应该使用这样的指针:

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

答案 3 :(得分:-3)

简单的问题。只是不要使用NSUIntegrer。而不是它,请执行以下操作:

id index;//then set the index