0

私は通常1行を使用するこのコードを持っています:

    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;

これらの 4 つの行がすべて実行された後、iは と等しくなり8ます。それが以前に別の値であったかどうかは問題ではありません。=演算子は、以前に変数にあったものを消去し、新しい値をそこに配置します。

したがって、コードに何をさせたいかに関係なく、あなたしていることは、演算子 cell.textlabel.textを使用するたびに の値を消去することです。、、および上記の例と同じ理由で、 に設定した後はもう存在しません。これは、基本的かつ非常に重要なプログラミングの概念です。=shopList.nameshopList.typeshopList.pricecell.textlabel.textshopList.occasioni = 8

何が悪いのか分かりますか?4 つの項目 (価格、名前、種類、機会) をすべて保存する場合は、4 つの個別の変数が必要です。


余談ですが、あなたがこの言葉をscope適切に使用していないことは確かです (私があなたのプログラムの目的を完全に誤解していない限り)。ウィキペディアから:

コンピュータ プログラミングでは、スコープは、変数名またはその他の識別子が有効で使用できる、または宣言が有効なコンピュータ プログラム内のコンテキストです。変数名の範囲外でも、変数の値は保存されている可能性があり、何らかの方法でアクセスできる可能性もありますが、名前はそれを参照していません。つまり、名前は変数のストレージにバインドされていません。

于 2012-06-30T05:42:51.133 に答える