У меня есть управляемый объект MyEntity
, который я использую без каких-либо проблем во всем приложении.RestKit - Не соответствует ключевому значению, кодируемому
@interface MyEntity : NSManagedObject
@property (nonatomic, retain) NSString *code;
@property (nonatomic, retain) NSNumber *def_value;
@property (nonatomic, retain) NSString *label;
@property (nonatomic, retain) NSString *link_label;
@property (nonatomic, retain) NSNumber *order;
@end
У меня есть веб-сервис http://my_server/MyEntity
который возвращает мне:
[
{
CODE: "TYPE",
LABEL: "Administrative",
ORDER: "3",
DEF_VALUE: "0",
LINK_LABEL: ""
},
{
CODE: "TOPIC",
LABEL: "NDF",
ORDER: "1",
DEF_VALUE: "0",
LINK_LABEL: "Administrative"
},
{
CODE: "TOPIC",
LABEL: "Report",
ORDER: "2",
DEF_VALUE: "1",
LINK_LABEL: "Administrative"
},
{
CODE: "TOPIC",
LABEL: "Other",
ORDER: "3",
DEF_VALUE: "0",
LINK_LABEL: "Administrative"
}, ...
]
Я пытаюсь карту и принести этот список
NSURL *baseUrl = [NSURL URLWithString: @"http://my_server"];
NSString *objName = @"MyEntity";
NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
[RKManagedObjectStore setDefaultStore:managedObjectStore];
[managedObjectStore createPersistentStoreCoordinator];
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL: baseUrl];
RKEntityMapping *objMap = [RKEntityMapping mappingForEntityForName:objName inManagedObjectStore:managedObjectStore];
[objMap addAttributeMappingsFromDictionary: @{
@"CODE": @"code",
@"LABEL": @"label",
@"ORDER": @"order",
@"DEF_VALUE": @"def_value",
@"LINK_LABEL": @"link_label",
}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objMap pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
[objectManager getObjectsAtPath:objName parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"ok");
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"ko");
}];
Это дает мне эту ошибку
I restkit.network:RKHTTPRequestOperation.m:185 GET
'http://my_server/MyEntity'
(200 OK) CoreData: error: Failed to call designated initializer on NSManagedObject class 'MyEntity'
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[ valueForUndefinedKey:]: the entity (null) is not key value coding-compliant for the key "link_label".'
Я видел эту ошибку или по 2 или 3 вопросам, но каждый с другой проблемой и, похоже, не мой.
Может кто-нибудь помочь мне отладить это?
Чем раньше ошибка, 'Не удалось вызвать обозначенную инициализатору на классе NSManagedObject «MyEntity» - это более непосредственная проблема и, вероятно, является причиной исключения кодирования ключевого значения. –