-2

ユーザーがボタン「x」をクリックしたときにUISearchBarからすべてを可変配列に収集したいのですがsearchString、self.historyListにオブジェクトが追加されていません....

メソッドでは:

            - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchString
        {
            self.ss = searchBar.text;

//this is initialized in viewDidLoad method
            //self.addSSFort = [[NSMutableArray alloc]init];

            [self.addSSFort addObject: self.ss];

            NSLog (@"addSSFort contains %@", self.addSSFort);

            //NSMutableArray *historyList = [[[NSMutableArray alloc]init]retain];
//this one is initialized in viewDidLoad method
            //self.historyList = [[NSMutableArray alloc]init];

            if ([self.ss length] == 0)
            {
        // here it is never being added
                [self.historyList addObject:[self.addSSFort objectAtIndex:[self.addSSFort count]-1]];
            }
    }

編集 :

self.addSSFort contains:

x
xc
xco
xcod
xcode <- I want to add this to self.historyList
""
t
tr
tre
tree <- I want to add this to self.historyList
""

ただし、self.historyList には以下が含まれます。

""
""

私はそれを含めたい:

xcode
tree

私がこのステートメントを使用するif ([self.ss length] == 0)のは、ユーザーが「x」をクリックして searchString を消去したことを示し、現在の searchString が終了したことを示しているためです。ARC については知っていますが、iOS 3 > iOS 5 を使用しているユーザー向けにこれを行っています。

編集2:

ああ、私はこれを解決しました!

4

3 に答える 3

0

あなたが何をしようとしているのかわからないかもしれませんが、あなたは持っています

If ([self.ss length] == 0)
{
        [self.historyList addObject:[self.addSSFort objectAtIndex:[self.addSSFort count]-1]];
}

検索バーにテキストがある場合、self.ss の長さは 0 になりません。「If」ステートメントは、オブジェクトを self.historyList に追加する行をブロックしています。文字列オブジェクトを historyList に追加する行にブレークポイントを配置して、そこに到達しているかどうかを確認しましたか?

ちなみに、ARC を使用している場合は保持は必要ありません。

于 2012-07-27T22:59:34.880 に答える
0

これはあなたの例の疑似コードです:

get text
add text to array
if text is empty string:
    add empty string to history

これは本当にあなたが望むものですか?

于 2012-07-27T22:55:30.470 に答える
-1

そのはず:

[self.historyList addObject:[self.addSSFort objectAtIndex:[self.addSSFort count]-2]];

それ以外の:

[self.historyList addObject:[self.addSSFort objectAtIndex:[self.addSSFort count]-1]];
于 2012-07-28T06:30:06.683 に答える