2012-09-12 45 views
5

he visto otros puestos con respecto a los errores de selector no reconocidos, pero nada en relación con el código generado automáticamente en el método siguiente:accidente de Datos Básicos - Selector no reconocido

- (void)tableView:(UITableView *)tableView commitEditingStyle:forRowAtIndexPath: 

esto se le llama cuando deslizar para eliminar y al tocar en el botón de borrar me sale el siguiente error:

-[Vehicle removeObjectFromGasUpsAtIndex:]: unrecognized selector sent to instance 0x8172c60

clase Mi NSManagedObject, vehículo, tiene una variable NSOrderedSet gasUps nombradas, que deben responder a este mensaje cuando quiero eliminarlo. O eso pensé.

Aquí es todo el método en el que está fallando:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // need to delete gas up and not vehicle 
    int row = [indexPath row]; 

    //[self.selectedVehicle removeObjectFromGasUpsAtIndex:row]; 
    [self.selectedVehicle removeObjectFromGasUpsAtIndex:row]; 
    NSError *error = nil; 
    if (![self.managedObjectContext save:&error]) { 
     // Replace this implementation with code to handle the error appropriately. 
     // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
} 
} 

¿Por qué es este selector no reconocido?

EDITAR: esto es para 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; 

// added methods 
- (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 

Y aquí es el fragmento de código en el que se establece self.selectedVehicle:

if (self.vehiclesArray != nil && [self.vehiclesArray count] != 0 && self.vehicleIndex != -1) { 
    // enable add buttom 
    [self.navigationItem.rightBarButtonItem setEnabled:YES]; 
    self.selectedVehicle = [self.vehiclesArray objectAtIndex:self.vehicleIndex]; 
    NSLog(@"set selected vehicle"); 
} else { 
    // disable add button 
    [self.navigationItem.rightBarButtonItem setEnabled:NO]; 

    // set vehicle defaults to -1 and make disable add buttom 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setInteger:-1 forKey:@"vehicleIndex"]; 
    [defaults synchronize]; 
    NSLog(@"set index to -1"); 
} 
+0

Usted proporcionó básicamente ninguna información útil. Solo un error y una línea de código. Básicamente no hay otro contexto. No somos lectores de la mente. Todo lo que podemos decir es el mismo que el tiempo de ejecución: su objeto no reconoce el selector 'removeObjectFromGasUpsAtIndex'. Ahora, si quiere mostrar el código que define el tipo 'Vehicle', y cómo está configurando' self.selectedVehicle' y tal vez incluso un registro del objeto justo antes de enviarlo el mensaje ... entonces tal vez podría obtener algunos ayuda. –

+0

posible duplicado de [Excepción arrojada en accesadores generados por NSOrderedSet] (http://stackoverflow.com/questions/7385439/exception-thrown-in-nsorderedset-generated-accessors) – jrturton

Respuesta

5

Esto está probablemente relacionado con un fallo conocido en el auto de Datos Básicos generada descriptores de acceso para ordenados uno-a-muchos relaciones.

rdar://10114310

Hasta que esto se aborda es necesario proporcionar su propia implementación de los descriptores de acceso que faltan.

Ver respuestas a this question

Cuestiones relacionadas