传递参数...从没有强制转换的指针生成整数

时间:2011-03-17 05:23:13

标签: objective-c casting

我该如何解决这个问题?

代码:

[NSNumber numberWithInteger:[buttonStatsInSection objectAtIndex:row]]
  

警告:传递'numberWithInteger:'的参数1使得指针中的整数没有强制转换

感谢。

2 个答案:

答案 0 :(得分:2)

为什么要创建新的NSNumber对象?你真的想要它的副本,或者你只是想要它的参考?你打算用它做什么?如果你想要一份副本,你可以这样做:

NSNumber* copy = (NSNumber*)[[buttonStatsInSection objextAtIndex:row] copy];

否则只需:

NSNumber* num = (NSNumber*)[buttonStatsInSection objextAtIndex:row];

无论哪种方式,都没有必要经历提取int值并将其转换回NSNumber的过程

答案 1 :(得分:1)

numberWithInteger:需要您int来创建NSNumber。你给它一个对象,因为objectAtIndex:返回一个对象。

即使您在该行的对象是NSNumber或其他任何内容,您仍需要以某种方式从中获取实际的int数据类型。

例如,如果你回来的对象是NSNumber,你最终会得到这样的东西:

NSNumber * myNSNum = [buttonStatsInSection objectAtIndex:row];
int myInt = [myNSNum intValue];
[NSNumber numberWithInteger:myInt];