-2

当用户单击按钮“x”到可变数组时,我想searchString从 UISearchBar 收集所有内容,但是它没有被添加到 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

这是您的示例的伪代码:

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

这真的是你想要的吗?

于 2012-07-27T22:55:30.470 回答
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 回答
-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 回答