10

को समझने में मदद की ज़रूरत है मैंने इस क्रैश के बारे में अन्य पोस्ट पढ़ी हैं जो भविष्य में वापसी करने वाली शून्य के साथ कुछ करने के लिए है लेकिन मैं इसे अपने ऐप से समझने में असमर्थ हूं। क्या कोई भी मेरी इस के साथ मदद कर सकता है?NSInvalidArgumentException ', कारण:' अमान्य भविष्यवाणी: शून्य आरएचएस, इसे

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; 
} 
+0

क्या यह 'predicateWithFormat' रेखा' या 'सेट' पर क्रैश हो जाता है भविष्यवाणी 'लाइन? –

+0

यह निम्न पंक्ति पर ठीक से दुर्घटनाग्रस्त हो जाता है: 'if (! [AfetchedResultsController performFetch: & error])' – kevnm67

उत्तर

21

त्रुटि संदेश बताता है searchString

NSPredicate *filterPredicate = [NSPredicate 
      predicateWithFormat:@"(workoutName CONTAINS[cd] %@)", searchString]; 

में nil इरादा अगर कोई खोज स्ट्रिंग दिया जाता है सभी वस्तुओं को प्रदर्शित करने के लिए है, तो आप सिर्फ एक विधेय को असाइन नहीं किया जाना चाहिए है कि उस मामले में अनुरोध प्राप्त करें:

if ([searchString length] > 0) { 
    NSPredicate *filterPredicate = [NSPredicate 
      predicateWithFormat:@"(workoutName CONTAINS[cd] %@)", searchString]; 
    [request setPredicate:filterPredicate]; 
} 
+1

धन्यवाद मार्टिन! यह काम करने लग रहा था। – kevnm67

+1

@ केवीएनएम 67: आपका स्वागत है! –

संबंधित मुद्दे