Gangani Roshan
Gangani Roshan

Reputation: 583

Objective C: unrecognized selector sent to instance 0x6080000550c0

Here, m try to sort the array when refersh the tableview but is crash the application when refresh tableview.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_PFArray sortUsingDescriptors:]: unrecognized selector sent to instance 0x6080000550c0'

@interface TableViewController () {
     NSMutableArray *returnArray; 
} 
@end




- (void)viewDidAppear:(BOOL)animated {

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
     NSManagedObjectContext *context = [appDelegate manageObjectContext];
    NSError *error = nil;

    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Resgistration" inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDescription];
    [request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"Unique",nil]];
    returnArray = [[NSMutableArray alloc] init];
    returnArray = [context executeFetchRequest:request error:&error];
    for(Resgistration* reg in returnArray) {
        NSLog(@"%@", reg);
        NSLog(@"%@", reg.roshan);
    }
 [self.tableView reloadData];
    UIColor *gray = [UIColor colorWithRed:234/255.0 green:234/255.0 blue:234/255.0 alpha:1.0];
  UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Please Wait"];
    [refreshControl setBackgroundColor:gray];
    [refreshControl addTarget:self action:@selector(sortArray) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;

}


 - (void)sortArray
    {

        NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedStandardCompare:)];
        NSMutableArray *sortDescriptior = [[NSMutableArray alloc] initWithObjects:sort, nil];
        [returnArray sortUsingDescriptors:sortDescriptior]; // crash the app

        [self.tableView reloadData];
        [self.refreshControl endRefreshing]; 
    }

Please help me to fix this problem. Thank you.

Upvotes: 0

Views: 594

Answers (1)

Puneet Sharma
Puneet Sharma

Reputation: 9484

_PFArray is a subclass of NSArray and is immutable. You can use sortUsingDescriptors: on mutable array only, hence the crash.

It looks like somewhere along the code you have assigned instance of CoreData array inside returnArray variable. There you must use mutableCopy method to convert the immutable array to its mutable version, something like this:

returnArray = [<data array fetched from core data> mutableCopy];

Edit after looking at complete code

returnArray = [[context executeFetchRequest:request error:&error] mutableCopy];

Upvotes: 2

Related Questions