Estoy escribiendo una aplicación para mostrar algunas noticias de un portal. Las noticias se obtienen usando un archivo JSON de Internet y luego se almacenan en un NSMutableArray utilizando el Modelo CoreData. Obviamente, un usuario no puede eliminar las noticias del archivo JSON en Internet, pero puede ocultarlas localmente. Los problemas vienen aquí, donde tengo el siguiente código:NSMutableArray removeObjectAtIndex: throws invalid argument exception
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
if(!moc){
moc = [[NewsFetcher sharedInstance] managedObjectContext];
}
[[dataSet objectAtIndex:indexPath.row] setEliminata:[NSNumber numberWithBool:YES]];
NSError *error;
if(![moc save:&error]){
NSLog(@"C'è stato un errore!");
}
[dataSet removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
La línea:
[dataSet removeObjectAtIndex:indexPath.row];
causa mis aplicaciones se bloquee con el siguiente error:
2010-07-12 19:08:16.021 ProvaVideo[284:207] * -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820 2010-07-12 19:08:16.022 ProvaVideo[284:207] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance 0x451c820'
estoy tratando de entender por qué no funciona, pero no puedo. Si reinicio la aplicación, la nueva se cancela lógicamente correctamente. ¿Alguna sugerencia? Gracias por adelantado.
Interfaz:
@interface ListOfVideo : UITableViewController <NSFetchedResultsControllerDelegate> {
NSMutableArray *dataSet;
}
@property (nonatomic, retain) NSMutableArray *dataSet;
// In the .m file:
@synthesize dataSet;
inicialización en viewDidLoad
:
dataSet = (NSMutableArray *) [[NewsFetcher sharedInstance]
fetchManagedObjectsForEntity:@"News"
withPredicate:predicate
withDescriptor:@"Titolo"];
[dataSet retain];
updateDatabase
... esto es cuando la comprobación de nuevas noticias de la red, los agrego en el MutableArray:
[dataSet addObject:theNews];
¿Estás seguro de que el conjunto de datos es un NSMutableArray? Si no responde a removeObjectAtIndex: podría ser un NSArray. –
No es un 'NSMutableArray' si no responde a ese selector. Es posible que no lo cree correctamente o use por error una propiedad ['copy'] (http://stackoverflow.com/questions/3220120/nsmutablearray-addobject-nsarrayi-addobject-unrecognized-selector-sent-to/3220137#3220137). Si tiene dudas intente probarlo usando '-isKindOfClass:'. –
umble, no es un NSMutableArray, sino: @interface ListOfVideo: UITableViewController {NSMutableArray * dataSet; } @property (nonatomic, retener) NSMutableArray * dataSet; ... // En el archivo .m @synthesize dataSet; –
IssamTP