NSTableView가 연결된 배열과 동일한 searcharray라는 이름으로 NSMutableArray를 검색하기위한 작업이 있습니다. NSMutableArray를 내 메서드로 보내어 TableView에 항목을 추가하는 메서드를 작성했습니다. 문제는 SearchField 및 SearchField에 입력 한 내용을 삭제했는지 검색 한 후 컴파일러가 비어있는 것과 TableView가 비어 있다고 느끼지 않는다는 것입니다. 그러나 내 코드로 인해 searcharray의 데이터가 있어야합니다. 내 코드는 다음과 같습니다.NSTableview 및 SearchField
#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
음, 지금까지 컴퓨터 주변 탬버린 : 하지만, 그냥 마술 춤 그래 충분히 .... 아니 었 확인하지 않습니다 , 나는 블록을 가지고 놀았다. else는 app이 실행 중일 때 모든 변수를 검사했고, 모든 것이 완전히 나에게 잘 보였다. 나는 그것이 왜 작동하지 않는 이유와 tableview가 비어 있다는 것을 모른다. ( –
나는 C에서 비슷한 루틴을 사용하고 거기에서 일했다. 나는 Objective-C에 익숙하지 않았기 때문에, 아마도 내가 모르는 것들이있을 것이다. –