for(NSInteger i = 0; i<[_tempPostalCodeList count]; i++){
***if(individualInfo.postalCode == [[_tempPostalCodeList objectAtIndex:i] postalCode])***{
myAnnotation.title = [NSString stringWithFormat:@"%i Records!", [[_postalCount objectAtIndex:i] intValue]];
}
}
我不知道这段代码有什么问题。该行有错误。 这适用于Java但不适用于目标c。 =(有人帮助
答案 0 :(得分:4)
尽管问题中缺少大量信息,但我的精神力量告诉我问题是-objectAtIndex:
类的消息NSArray
返回类型为{{1}的通用对象}。因此,表达式id
正在将[[_tempPostalCodeList objectAtIndex:i] postalCode]
消息发送到类型为postalCode
的对象。由于编译器不知道实际对象的基础类型,因此无法推断出id
消息的返回类型,因此它假定它也返回postalCode
。
id
是一个指针类型,由于id
是一个整数类型,编译器认为你在评估postalCode
运算符时尝试将指针与整数进行比较,因此警告。修复此问题的方法是插入强制转换或引入临时变量:
==
您可以在没有强制转换的情况下使用临时变量的原因是因为// Option #1: Use a cast
if(individualInfo.postalCode ==
[(MyClass*)[_tempPostalCodeList objectAtIndex:i] postalCode]) {
...
}
// Option #2: Use a temporary variable
MyClass *obj = [_tempPostalCodeList objectAtIndex:i];
if(individualInfo.postalCode == obj.postalCode) {
...
}
类型(由id
返回)可以通过简单赋值隐式转换为任何Objective-C类类型(类似于如何在C(但不是C ++)中,-objectAtIndex:
类型可以隐式地转换为任何指针类型。)