Objective-C woes: cellForRowAtIndexPath crashes.

Posted by Mr. McPepperNuts on Stack Overflow See other posts from Stack Overflow or by Mr. McPepperNuts
Published on 2010-06-09T21:56:42Z Indexed on 2010/06/09 22:32 UTC
Read the original article Hit count: 457

Filed under:
|

I want to the user to be able to search for a record in a DB. The fetch and the results returned work perfectly. I am having a hard time setting the UItableview to display the result tho. The application continually crashes at cellForRowAtIndexPath. Please, someone help before I have a heart attack over here. Thank you.

@implementation SearchViewController
@synthesize mySearchBar;
@synthesize textToSearchFor;
@synthesize myGlobalSearchObject;
@synthesize results;
@synthesize tableView;
@synthesize tempString;

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];
}

#pragma mark -
#pragma mark Table View
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    //handle selection; push view
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
/*  if(nullResulSearch == TRUE){
        return 1;
    }else {
        return[results count];
    }   
 */ 
    return[results count];
 }

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;  // Test hack to display multiple rows.
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Search Cell Identifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil){
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier] autorelease];
    }

    NSLog(@"TEMPSTRING %@", tempString);
    cell.textLabel.text = tempString;

    return cell;    
 }

#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

}

- (void)viewDidUnload {
    self.tableView = nil;
}

- (void)dealloc {
    [results release];
    [mySearchBar release];
    [textToSearchFor release];
    [myGlobalSearchObject release];
    [super dealloc];
}

#pragma mark -
#pragma mark Search Function & Fetch Controller

- (NSManagedObject *)SearchDatabaseForText:(NSString *)passdTextToSearchFor{
    NSManagedObject *searchObj;
    UndergroundBaseballAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == [c]%@", passdTextToSearchFor]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entry" inManagedObjectContext:managedObjectContext]; 
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];   

    [request setSortDescriptors:sortDescriptors];
    [request setEntity: entity]; 
    [request setPredicate: predicate]; 

    NSError *error;

    results = [managedObjectContext executeFetchRequest:request error:&error];

    if([results count] == 0){
        NSLog(@"No results found");
        searchObj = nil;
        nullResulSearch == TRUE;
    }else{
        if ([[[results objectAtIndex:0] name] caseInsensitiveCompare:passdTextToSearchFor] == 0) {
            NSLog(@"results %@", [[results objectAtIndex:0] name]);
            searchObj = [results objectAtIndex:0];
            nullResulSearch == FALSE;
        }else{
            NSLog(@"No results found");
            searchObj = nil;
            nullResulSearch == TRUE;
        }       
    }

    [tableView reloadData]; 

    [request release];
    [sortDescriptors release];

    return searchObj;
}

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
    textToSearchFor =  mySearchBar.text;
    NSLog(@"textToSearchFor: %@", textToSearchFor);
    myGlobalSearchObject = [self SearchDatabaseForText:textToSearchFor];
    NSLog(@"myGlobalSearchObject: %@", myGlobalSearchObject);
    tempString = [myGlobalSearchObject valueForKey:@"name"];
    NSLog(@"tempString: %@", tempString);   
}
@end



*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UILongPressGestureRecognizer isEqualToString:]: unrecognized selector sent to instance 0x3d46c20'

© Stack Overflow or respective owner

Related posts about iphone

Related posts about objective-c