Objective-C: Scope problems cellForRowAtIndexPath
- by Mr. McPepperNuts
How would I set each individual row in cellForRowAtIndexPath to the results of an array populated by a Fetch Request? (Fetch Request made when button is pressed.)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ... set up cell code here ...
cell.textLabel.text = [results objectAtIndex:indexPath valueForKey:@"name"];
}
warning: 'NSArray' may not respond to '-objectAtIndexPath:'
Edit:
- (NSArray *)SearchDatabaseForText:(NSString *)passdTextToSearchFor{
NSManagedObject *searchObj;
XYZAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains [cd] %@", 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];
// NSLog(@"results %@", results);
if([results count] == 0){
NSLog(@"No results found");
searchObj = nil;
self.tempString = @"No results found.";
}else{
if ([[[results objectAtIndex:0] name] caseInsensitiveCompare:passdTextToSearchFor] == 0) {
NSLog(@"results %@", [[results objectAtIndex:0] name]);
searchObj = [results objectAtIndex:0];
}else{
NSLog(@"No results found");
self.tempString = @"No results found.";
searchObj = nil;
}
}
[tableView reloadData];
[request release];
[sortDescriptors release];
return results;
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
textToSearchFor = mySearchBar.text;
results = [self SearchDatabaseForText:textToSearchFor];
self.tempString = [myGlobalSearchObject valueForKey:@"name"];
NSLog(@"results count: %d", [results count]);
NSLog(@"results 0: %@", [[results objectAtIndex:0] name]);
NSLog(@"results 1: %@", [[results objectAtIndex:1] name]);
}
@end
Console prints:
2010-06-10 16:11:18.581 XYZApp[10140:207] results count: 2
2010-06-10 16:11:18.581 XYZApp[10140:207] results 0: BB Bugs
2010-06-10 16:11:18.582 XYZApp[10140:207] results 1: BB Annie
Program received signal: “EXC_BAD_ACCESS”.
(gdb)
Edit 2:
BT:
#0 0x95a91edb in objc_msgSend ()
#1 0x03b1fe20 in ?? ()
#2 0x0043cd2a in -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] ()
#3 0x0043ca9e in -[UITableViewRowData invalidateAllSections] ()
#4 0x002fc82f in -[UITableView(_UITableViewPrivate) _updateRowData] ()
#5 0x002f7313 in -[UITableView noteNumberOfRowsChanged] ()
#6 0x00301500 in -[UITableView reloadData] ()
#7 0x00008623 in -[SearchViewController SearchDatabaseForText:] (self=0x3d16190, _cmd=0xf02b, passdTextToSearchFor=0x3b29630)
#8 0x000086ad in -[SearchViewController searchBarSearchButtonClicked:] (self=0x3d16190, _cmd=0x16492cc, searchBar=0x3d2dc50)
#9 0x0047ac13 in -[UISearchBar(UISearchBarStatic) _searchFieldReturnPressed] ()
#10 0x0031094e in -[UIControl(Deprecated) sendAction:toTarget:forEvent:] ()
#11 0x00312f76 in -[UIControl(Internal) _sendActionsForEventMask:withEvent:] ()
#12 0x0032613b in -[UIFieldEditor webView:shouldInsertText:replacingDOMRange:givenAction:] ()
#13 0x01d5a72d in __invoking___ ()
#14 0x01d5a618 in -[NSInvocation invoke] ()
#15 0x0273fc0a in SendDelegateMessage ()
#16 0x033168bf in -[_WebSafeForwarder forwardInvocation:] ()
#17 0x01d7e6f4 in ___forwarding___ ()
#18 0x01d5a6c2 in __forwarding_prep_0___ ()
#19 0x03320fd4 in WebEditorClient::shouldInsertText ()
#20 0x0279dfed in WebCore::Editor::shouldInsertText ()
#21 0x027b67a5 in WebCore::Editor::insertParagraphSeparator ()
#22 0x0279d662 in WebCore::EventHandler::defaultTextInputEventHandler ()
#23 0x0276cee6 in WebCore::EventTargetNode::defaultEventHandler ()
#24 0x0276cb70 in WebCore::EventTargetNode::dispatchGenericEvent ()
#25 0x0276c611 in WebCore::EventTargetNode::dispatchEvent ()
#26 0x0279d327 in WebCore::EventHandler::handleTextInputEvent ()
#27 0x0279d229 in WebCore::Editor::insertText ()
#28 0x03320f4d in -[WebHTMLView(WebNSTextInputSupport) insertText:] ()
#29 0x0279d0b4 in -[WAKResponder tryToPerform:with:] ()
#30 0x03320a33 in -[WebView(WebViewEditingActions) _performResponderOperation:with:] ()
#31 0x03320990 in -[WebView(WebViewEditingActions) insertText:] ()
#32 0x00408231 in -[UIWebDocumentView insertText:] ()
#33 0x003ccd31 in -[UIKeyboardImpl acceptWord:firstDelete:addString:] ()
#34 0x003d2c8c in -[UIKeyboardImpl addInputString:fromVariantKey:] ()
#35 0x004d1a00 in -[UIKeyboardLayoutStar sendStringAction:forKey:] ()
#36 0x004d0285 in -[UIKeyboardLayoutStar handleHardwareKeyDownFromSimulator:] ()
#37 0x002b5bcb in -[UIApplication handleEvent:withNewEvent:] ()
#38 0x002b067f in -[UIApplication sendEvent:] ()
#39 0x002b7061 in _UIApplicationHandleEvent ()
#40 0x02542d59 in PurpleEventCallback ()
#41 0x01d55b80 in CFRunLoopRunSpecific ()
#42 0x01d54c48 in CFRunLoopRunInMode ()
#43 0x02541615 in GSEventRunModal ()
#44 0x025416da in GSEventRun ()
#45 0x002b7faf in UIApplicationMain ()
#46 0x00002578 in main (argc=1, argv=0xbfffef5c) at /Users/default/Documents/iPhone Projects/XYZApp/main.m:14