我有一个搜索NSMutableArray的动作,名称为searcharray,它等于连接NSTableView的数组。我写了一个方法,只需将NSMutableArray发送到我的方法,就可以向TableView添加项目。 问题是,在搜索后我是否删除了我在SearchField中输入的内容并且SearchField为空时,编译器不会觉得它是空的而我的TableView也是空的,但由于我的代码,它必须与来自searcharray的数据相关。 这是我的代码:
#import "myTableViewAppDelegate.h"
@implementation myTableViewAppDelegate
@synthesize window;
@synthesize searcharray;
-(void)addItems:(NSMutableArray *)ar{
array = ar;
[array retain];
[tableView reloadData];
}
- (int)numberOfRowsInTableView:(NSTableView *)tableView{
return (int)[array count];
}
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
{
return [array objectAtIndex:row];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
NSMutableArray *animals = [[NSMutableArray arrayWithObjects:@"Cat", @"Dog", @"Fish", @"Squirrel", @"Bear", @"Turtle", nil] retain];
NSLog(@"%@",animals);
searcharray = animals;
[self addItems:animals];
}
- (IBAction)search:(id)sender {
//NSLog(@"%@",searcharray);
NSString *filter = [[NSString alloc] initWithString:[search stringValue]];
NSMutableArray *result = [[NSMutableArray alloc] init];
if (filter != nil) {
for (NSString *item in searcharray) {
if ([item rangeOfString:[search stringValue]].location !=NSNotFound ) {
NSLog(@"Item %@ contains %@",item,[search stringValue]);
[result addObject:item];
}
}
}
else{
result = searcharray;
}
NSLog(@"%@",result);
[self addItems:result];
[result release];
[filter release];
}
@end
答案 0 :(得分:0)
修正了它。
if (filter != nil || filter.length != 0)
我不知道为什么,但只是检查等于NULL的变量是不够的....