NSTableview и SearchField - PullRequest
       24

NSTableview и SearchField

1 голос
/ 27 сентября 2011

У меня есть действие для поиска в NSMutableArray с именем searcharray, которое равно массиву, с которым связаны NSTableView. И я написал метод для добавления элементов в TableView, просто отправив NSMutableArray в мой метод.Проблема в том, что после поиска, если я удаляю то, что я набрал в 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

1 Ответ

0 голосов
/ 08 ноября 2011

Исправлено.

if (filter != nil || filter.length != 0)

Я не знаю почему, но проверки переменной, равной NULL, было недостаточно ....

...