使用以下代码时,我收到编译器警告:
for(int i=0; i<[mutableTempArray count]; i++){
//...
[tempInfoDictionary setValue:i forKey:@"tag"];
//...
}
警告是:
传递'setValue:forKey:'的参数1使得指针来自整数而没有强制转换
我在这里做错了什么?
答案 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"];