I saw other messages about unrecognized selector errors, but nothing about the automatically generated code in the following method:
- (void)tableView:(UITableView *)tableView commitEditingStyle:forRowAtIndexPath:
This is called when deleting with your finger, and when you click the delete button, the following error appears:
- [Vehicle removeObjectFromGasUpsAtIndex:]: unrecognized selector sent to instance 0x8172c60
In my NSManagedObject class, Vehicle, there is an NSOrderedSet variable called gasUps that should reply to this message when I want to delete it. Or so I thought.
Here is the whole method where it crashes:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
int row = [indexPath row];
[self.selectedVehicle removeObjectFromGasUpsAtIndex:row];
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
Why is this selector unrecognized?
EDIT: This is for Jody.
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
typedef enum {
FullExtract,
NameExtract
} kTitleExtract;
@interface Vehicle : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * year;
@property (nonatomic, retain) NSString * make;
@property (nonatomic, retain) NSNumber * mileage;
@property (nonatomic, retain) NSString * model;
@property (nonatomic, retain) NSOrderedSet *gasUps;
- (NSString *)getTitleExtract:(kTitleExtract)titleExtract;
@end
@interface Vehicle (CoreDataGeneratedAccessors)
- (void)insertObject:(NSManagedObject *)value inGasUpsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromGasUpsAtIndex:(NSUInteger)idx;
- (void)insertGasUps:(NSArray *)value atIndexes:(NSIndexSet *)indexes;
- (void)removeGasUpsAtIndexes:(NSIndexSet *)indexes;
- (void)replaceObjectInGasUpsAtIndex:(NSUInteger)idx withObject:(NSManagedObject *)value;
- (void)replaceGasUpsAtIndexes:(NSIndexSet *)indexes withGasUps:(NSArray *)values;
- (void)addGasUpsObject:(NSManagedObject *)value;
- (void)removeGasUpsObject:(NSManagedObject *)value;
- (void)addGasUps:(NSOrderedSet *)values;
- (void)removeGasUps:(NSOrderedSet *)values;
@end
And here is the code snippet where self.selectedVehicle is installed:
if (self.vehiclesArray != nil && [self.vehiclesArray count] != 0 && self.vehicleIndex != -1) {
[self.navigationItem.rightBarButtonItem setEnabled:YES];
self.selectedVehicle = [self.vehiclesArray objectAtIndex:self.vehicleIndex];
NSLog(@"set selected vehicle");
} else {
[self.navigationItem.rightBarButtonItem setEnabled:NO];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:-1 forKey:@"vehicleIndex"];
[defaults synchronize];
NSLog(@"set index to -1");
}