ios - La propiedad ''managedObjectStore'' no se encuentra en el objeto de tipo ''RKObjectManager''
restkit restkit-0.20 (6)
Añadir
#import <CoreData/CoreData.h>
a su archivo .pch.
He estado intentando trabajar con la versión 0.20.3 de la biblioteca Restkit. Recientemente se ha producido un error que no puedo averiguar cómo resolver. Es la siguiente:
La propiedad ''managedObjectStore'' no se encuentra en el objeto de tipo ''RKObjectManager *''
Sucede en la línea que contiene
objectManager.managedObjectStore = managedObjectStore;
A continuación se muestra un pequeño bloque de mi código para ayudar con la identificación. Utilicé CocoaPods para instalar todas las bibliotecas necesarias y todo parece enlazar correctamente.
#import "AppDelegate.h"
#import <RestKit/RestKit.h>
#import <RestKit/CoreData.h>
#import <CoreData/CoreData.h>
#import <RestKit/ObjectMapping.h>
#import "Temperature.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
//let AFNetworking manage the activity indicator
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
// Override point for customization after application launch.
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://grid.no-ip.biz/grid"]];
NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Grideye" ofType:@"momd"]];
//Initialize managed object store
NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL ] mutableCopy];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
objectManager.managedObjectStore = managedObjectStore;
// Setup our object mappings
/**
Mapping by entity. Here we are configuring a maping by targetting a Core Data entity with a specific
name. This allows us to map back Sensor database objects directly onto NSManagedObject instances
there is no backing model class
*/
RKEntityMapping *sensorMapping = [RKEntityMapping mappingForEntityForName:@"SensorID" inManagedObjectStore:managedObjectStore];
sensorMapping.identificationAttributes = @[ @"sensorID"];
[sensorMapping addAttributeMappingsFromDictionary:@{
@"sensorID" : @"sensorID",
@"cellNum" : @"cellNum",
@"timeStamp": @"timeStamp",
@"temp" : @"temp"
}];
//Update date format so that we can parse Sensor dates properly
[RKObjectMapping addDefaultDateFormatterForString:@"E MMM d HH:mm:ss Z y" inTimeZone:nil];
// Register our mappings with the provider
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:sensorMapping method:RKRequestMethodGET pathPattern:@":grid" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
Gracias por cualquier entrada que pueda proporcionar!
Agregar configuraciones de generación Rutas de búsqueda de encabezado de usuario "$ {PROJECT_DIR} / Pods" recursivas. Esto solucionó el problema en mi caso.
En XCode6 al crear un nuevo proyecto, el archivo "pch" no se creó de forma predeterminada, tuve que crear el archivo pch manualmente después del archivo PCH en Xcode 6
Lo tengo funcionando Después de importar encabezados en el archivo pch:
#import <CoreData/CoreData.h>
#import <RestKit/RestKit.h>
La causa raíz de este problema está en RKObjectManager.h
#ifdef _COREDATADEFINES_H
# if __has_include("RKCoreData.h")
# define RKCoreDataIncluded
# endif
#endif
Esta inclusión ha cambiado los nombres, por lo que en todos los lugares donde RKCoreData.h aparece cambiar a RestKit / CoreData.h hay varios archivos de inclusión que usan esta construcción, así que realice una búsqueda global.
Si está actualizando de 0.20 a 0.26 (por ejemplo, la actualización de un proyecto muy antiguo que no se había actualizado durante años), puede encontrar que lo siguiente, sugerido en otras respuestas, es insuficiente:
- agregue
#import <CoreData/CoreData.h>
en pch - agregue
#import <CoreData/CoreData.h>
antes de#import <RestKit/RestKit.h>
En su lugar, en la parte superior del archivo relevante donde está importando restkit,
// Workaround for bug on RestKit 0.26.0 according to https://github.com/RestKit/RestKit/issues/2352
#ifndef RKCoreDataIncluded
#define RKCoreDataIncluded
#endif
Tuve exactamente el mismo problema al actualizar de 0.20.1 a 0.20.3.
Lo que debe hacer es importar CoreData antes de importar RestKit.
#import <CoreData/CoreData.h>
#import <RestKit/RestKit.h>
está trabajando.
pero
#import <RestKit/RestKit.h>
#import <CoreData/CoreData.h>
no está trabajando.