为什么我收到此编译器警告?

时间:2010-12-27 00:49:43

标签: objective-c ios compiler-warnings

使用以下代码时,我收到编译器警告:

for(int i=0; i<[mutableTempArray count]; i++){
  //...
  [tempInfoDictionary setValue:i forKey:@"tag"];
  //...
}

警告是:

  

传递'setValue:forKey:'的参数1使得指针来自整数而没有强制转换

我在这里做错了什么?

2 个答案:

答案 0 :(得分:6)

Objective-C中的集合只能包含对象,因此您需要将i包裹在NSNumber对象中。

i本身是一种原始类型,而不是一个对象,所以它不能放在一个集合对象中。

setValue:forKey:的第一个参数应该是指针类型,i本身显然不是。

我建议在setObject:forKey:而不是NSDictionary上使用setValue:forKey:方法,因为它会更好地表明您的意图。您不仅要存储,还要存储 对象

[tempInfoDictionary setObject:[NSNumber numberWithInt:i] forKey:@"tag"];

答案 1 :(得分:1)

您正在尝试将int放入对象数组中,但它期望id即指针。试试[tempInfoDictionary setValue:[NSNumber numberWithInt:i] forKey:@"tag"];