NSInvalidArgumentException', reason: 'Invalid predicate: nil RHS, need help figuring this out
invalidargumentexception, nsfetchedresultscontroller, nspredicate
Solution
The error message indicates that `searchString` is `nil` in
NSPredicate *filterPredicate = [NSPredicate
predicateWithFormat:@"(workoutName CONTAINS[cd] %@)", searchString];
If the intention is to display all objects if no search string is given, you should just not assign a predicate to the fetch request in that case:
if ([searchString length] > 0) {
NSPredicate *filterPredicate = [NSPredicate
predicateWithFormat:@"(workoutName CONTAINS[cd] %@)", searchString];
[request setPredicate:filterPredicate];
}
Problem
I've read other posts about this crash having something to do with the predicate returning nil but im unable to figure this out with my app. Can someone please help me with this? ``` static NSString *const KJMWorkoutCategorySectionKeyPath = @"workoutCategory"; - (NSFetchedResultsController *)fetchedResultsControllerWithSearchString:(NSString *)searchString { NSManagedObjectContext *sharedContext; // my NSManagedObjectContext instance... NSFetchRequest *request = [NSFetchRequest new]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Workouts" inManagedObjectContext:sharedContext]; request.entity = entity; request.predicate = [NSPredicate predicateWithFormat:@"(workoutName CONTAINS[cd] %@)", searchString]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:KJMWorkoutCategorySectionKeyPath ascending:YES]; request.sortDescriptors = @[sortDescriptor]; NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:sharedContext sectionNameKeyPath:KJMWorkoutCategorySectionKeyPath cacheName:nil]; fetchedResultsController.delegate = self; NSError *error = nil; if (![fetchedResultsController performFetch:&error]) { NSLog(@"Unresolved error %@, %@", error, error.userInfo); abort(); } return fetchedResultsController; } ```