0

我有这段代码,我通常会使用一行:

    if (tableView == self.searchDisplayController.searchResultsTableView)
{
    NSLog(@"Configuring cell to show search results");
    shoppingList = [self.searchResults objectAtIndex:indexPath.row];

    cell.textLabel.text = shopList.name; 
    cell.textLabel.text = shopList.type;
    cell.textLabel.text = shopList.price;
    cell.textLabel.text = shopList.occasion;


    } 

我有这个的原因是我在我的搜索栏下实现了一个范围。现在范围工作了,当我输入名称时,我希望在选择第一个范围(即产品名称)时看到该名称。

然而,正在发生的事情是它显示了正在发生的事情,因为它是列表中的最后一个(我认为)。因此,当我输入产品名称时,它会出现匹配的场合而不是产品名称。

如何设置它以显示我在范围中选择的内容?

我已经实现了以下方法,以使范围正常工作,只是标签没有正确显示,这在上面的 tableView 部分代码中受到影响。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
 {

任何帮助都很棒:-) 谢谢。

4

1 回答 1

0

=运营商就是assignment运营商。这意味着在执行该行代码后,运算符左侧的=任何内容都将成为右侧的任何内容。

例如:

int i = 5; i = 4; i = 3; i = 8;

在执行完所有这四行之后,i等于8。之前它是另一个值并不重要 -=运算符会删除之前变量中的任何内容并将新值放入其中。

因此,无论您希望代码做什么,您所做的都是抹杀cell.textlabel.text每次使用=运算符的值。 shopList.name, shopList.type, 并且在您设置为shopList.price之后不再存在,原因与我上面的示例相同。这是一个基本且非常重要的编程概念。cell.textlabel.textshopList.occasioni = 8

你现在明白怎么回事了吗?如果你想保存所有四个项目——价格、名称、类型和场合——你需要四个单独的变量来做到这一点。


顺便说一句,我相当肯定你没有scope正确使用这个词(除非我完全误解了你的程序的目的)。来自维基百科:

在计算机编程中,范围是计算机程序中的上下文,其中变量名或其他标识符是有效的并且可以使用,或者声明在其中有效。在变量名的范围之外,变量的值可能仍然被存储,甚至可能以某种方式被访问,但名称并不引用它;也就是说,名称不绑定到变量的存储。

于 2012-06-30T05:42:51.133 回答