ios - El tipo de receptor es declaración directa
objective-c core-data (6)
Tengo este código (junto con otras cosas):
- (NSManagedObjectContext *) managedObjectContext
{
assert([NSThread isMainThread]);
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
}
return _managedObjectContext;
}
Estas líneas me están dando errores de que el mensaje de clase es una declaración de reenvío:
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
¿Qué es esto y cómo lo arreglo?
Agregue esto a la parte superior de su archivo .h o .m
#import <CoreData/CoreData.h>
Cambio de archivo DDXML.h y Trabajo.
Archivo: DDXML.h
Cambio:
#if TARGET_OS_IPHONE && 0 // Disabled by default
A:
#if TARGET_OS_IPHONE && 1 // Disabled by default
Debe importar CoreData / CoreData.h en el archivo Supporting Files / YourApp-Prefix.pch:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif
Esto me sucede con frecuencia después de cambiar el nombre de una clase y luego olvidarme de actualizar @class myclass en un archivo de encabezado (que obviamente no generará un error de compilación).
Por Declaración de reenvío significa que debe estar declarando clase por @Class
. Importe la clase en el archivo .h / .m y espere que se resuelva el problema.
Resolví el problema al importar el archivo #import "Project-Name-Swift.h" en la clase de Objective C que usa una clase Swift.