objective-c error在if块中重新分配变量

时间:2013-03-22 16:01:51

标签: objective-c

我收到错误,“从cincompatible类型'id'分配给'BNRItem'”,尝试将不同的对象分配给在if块之外声明的变量。为什么我在声明变量并为其赋值时却没有得到相同的错误,但是当我尝试在if语句中重新分配它时会出错?谢谢你的帮助!

BNRItem *p = [[[BNRItemStore sharedStore] getHighValueItems]    <== no error
                  objectAtIndex:[indexPath row]];

if(indexPath.section==1){
        *p = [[[BNRItemStore sharedStore] getLowValueItems] <== error 
                 objectAtIndex:[indexPath row]];

}

2 个答案:

答案 0 :(得分:1)

删除*如此...

if(indexPath.section==1){
        p = [[[BNRItemStore sharedStore] getLowValueItems] objectAtIndex:[indexPath row]];
}

您已经在if上方创建了指针,现在您只需指定值。

答案 1 :(得分:0)

只有在第一次声明变量时才应使用解除引用运算符(*)。

BNRItem *p = nil;

if(indexPath.section==1){
        p = [[[BNRItemStore sharedStore] getLowValueItems]
                 objectAtIndex:[indexPath row]];
}