首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios NSUinteger键入“id”

ios NSUinteger键入“id”
EN

Stack Overflow用户
提问于 2012-02-20 19:53:20
回答 4查看 5.3K关注 0票数 5

我的大脑今天快不行了。我知道这一定很简单,但我就是不明白。

代码语言:javascript
复制
CGFloat *minutes = [self.displayData objectForKey:index];

不兼容的整数到指针转换,将'NSUInteger‘(又名’无符号int')发送到'id‘类型的参数

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

我怎么才能通过这个呢?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-20 19:55:25

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

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

代码语言:javascript
复制
CGFloat *minutes = [self.displayData objectForKey:[NSNumber numberWithUnsignedInteger:index]];
票数 8
EN

Stack Overflow用户

发布于 2012-02-20 20:11:22

-objectForKey:方法返回一个类型为id的值,但是您试图将它分配给CGFloat*,因为CGFloat不是一个类,因此CGFloat与id不兼容。如果您知道从字典中检索的对象是特定类型(比如NSNumber ),则可以在得到它时采取步骤将其转换为CGFloat。

此外,您还试图使用int作为字典中的键,但是字典也要求它们的键是对象。如果要按索引访问对象,请将它们存储在数组中而不是字典中。

把这一切加在一起,你就会得到这样的东西:

代码语言:javascript
复制
// after changing the displayData to an array
NSNumber *number = [self.displayData objectAtIndex:index];
CGFloat minutes = [number floatValue];
票数 2
EN

Stack Overflow用户

发布于 2012-02-20 19:57:05

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

代码语言:javascript
复制
CGFloat minutes = [self.displayData objectForKey:index];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9367532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档