objective c - Error de compilación "uso de identificador no declarado" cuando elimino mis declaraciones @synthesize
objective-c compiler-errors (3)
Cuando no coloca un @synthesize
en su código, la variable de instancia creada para respaldar la propiedad se llama _propertyName
. Se refiere a la variable de instancia fetchedResultsController
que ya no existe después de eliminar @synthesize
. En su lugar, cambie todas las referencias a fetchedResultsController
a _fetchedResultsController
.
Con la última versión de LLVM, se eliminó el requisito de sintetizar propiedades.
Por lo tanto, pude eliminar todas mis declaraciones @synthesize
excepto las de NSFetchedResultsController
. ¿Alguien sabe por qué el compilador me advierte cuando @synthesize fetchedResultsController;
el @synthesize fetchedResultsController;
¿línea?
Error:
El uso del identificador no declarado "fetchedResultsController", ¿se refirió a _fetchedResultsController?
Este es mi código:
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
@synthesize fetchedResultsController;
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController) {
return fetchedResultsController;
}
if (!self.managedObjectContext) {
self.managedObjectContext = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Session" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate: self.predicate];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController= [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
fetchedResultsController.delegate = self;
NSError *error = nil;
if (![fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return fetchedResultsController;
}
Debido a que la variable sintetizada por defecto es _fetchedResultsController
not fetchedResultsController
La propiedad fetchedResultsController
se sintetiza automáticamente en _fetchedResultsController
, y esto ocurre para cada variable sintetizada.
Debe sintetizarlo explícitamente para cambiar su nombre.