我的大脑今天让我失望了。我知道这必须是一个简单的,但我只是没有看到它。
CGFloat *minutes = [self.displayData objectForKey:index];
不兼容的整数到指针转换将'NSUInteger'(又名'unsigned int')发送到'id'类型的参数
index
是循环中的NSUInteger
,(0 1 2 3等)
我如何通过这个?感谢。
答案 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