0

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

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

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

}
4

2 回答 2

1

像这样删除* ...

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

您已经在 if 上方创建了指针,现在您只是在分配值。

于 2013-03-22T16:12:01.990 回答
0

仅在首次声明变量时才应使用取消引用运算符 (*)。

BNRItem *p = nil;

if(indexPath.section==1){
        p = [[[BNRItemStore sharedStore] getLowValueItems]
                 objectAtIndex:[indexPath row]];
}
于 2013-03-22T16:16:44.950 回答