Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 找不到RestKit的可映射关系值keyPath_Ios_Json_Restkit - Fatal编程技术网

Ios 找不到RestKit的可映射关系值keyPath

Ios 找不到RestKit的可映射关系值keyPath,ios,json,restkit,Ios,Json,Restkit,我无法使用RestKit将JSON映射到核心数据。他说: Did not find mappable relationship value keyPath. 我显然做错了什么 日志: 以下是我的映射: objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppCD.sqlite"]; RKManagedObjectMapping* entityClassItemValueMappin

我无法使用RestKit将JSON映射到核心数据。他说:

Did not find mappable relationship value keyPath.
我显然做错了什么

日志:

以下是我的映射:

objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"AppCD.sqlite"];

RKManagedObjectMapping* entityClassItemValueMapping = [RKManagedObjectMapping mappingForClass:[EntityClassItemValue class] inManagedObjectStore:[[RKObjectManager sharedManager] objectStore]];
entityClassItemValueMapping.primaryKeyAttribute = @"name";
[entityClassItemValueMapping mapKeyPath:@"NAME" toAttribute:@"name"];
[entityClassItemValueMapping mapKeyPath:@"VALUE" toAttribute:@"value"];

RKManagedObjectMapping* entityClassItemMapping = [RKManagedObjectMapping mappingForClass:[EntityClassItem class] inManagedObjectStore:[[RKObjectManager sharedManager] objectStore]];
entityClassItemMapping.primaryKeyAttribute = @"iqid";
[entityClassItemMapping mapKeyPath:@"IQID" toAttribute:@"iqid"];

RKManagedObjectMapping* entityClassMapping = [RKManagedObjectMapping mappingForClass:[EntityClass class] inManagedObjectStore:[[RKObjectManager sharedManager] objectStore]];
entityClassMapping.primaryKeyAttribute = @"type";
[entityClassMapping mapKeyPath:@"OBJECTCLASS" toAttribute:@"type"];
[entityClassMapping mapKeyPath:@"TIMESTAMP" toAttribute:@"timestamp"];

[entityClassMapping mapKeyPath:@"VALUES" toRelationship:@"values" withMapping:entityClassItemMapping];
[entityClassItemMapping mapKeyPath:@"DATA" toRelationship:@"entityClassItemValues" withMapping:entityClassItemValueMapping];

[[RKObjectManager sharedManager].mappingProvider setMapping:entityClassMapping forKeyPath:@"JSONDATA"];
[[RKObjectManager sharedManager].mappingProvider setMapping:entityClassItemMapping forKeyPath:@"VALUES"];
[[RKObjectManager sharedManager].mappingProvider setMapping:entityClassItemValueMapping forKeyPath:@"DATA"];

[[objectManager client] setValue:[cookies objectForKey:@"Cookie"] forHTTPHeaderField:@"Cookie"];
NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys:query, @"Targ", @"", @"Query", @"F285E67F2C8CEC9837B68", @"$SESSION", @"3A7037FA806156C4", @"VERSION", nil];
[objectManager loadObjectsAtResourcePath:URL_DATA usingBlock:^(RKObjectLoader *loader) {
    loader.method = RKRequestMethodPOST;
    loader.params = params;
    loader.mappingProvider = [RKObjectManager sharedManager].mappingProvider;
    loader.onDidLoadObjects = loadBlock;
    loader.onDidFailWithError = failBlock;
}];
我的CoreData模型是:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClass : NSManagedObject

@property (nonatomic, retain) NSString * timestamp;
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSSet *values;
@end

@interface EntityClass (CoreDataGeneratedAccessors)

- (void)addValuesObject:(EntityClassItem *)value;
- (void)removeValuesObject:(EntityClassItem *)value;
- (void)addValues:(NSSet *)values;
- (void)removeValues:(NSSet *)values;

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClass : NSManagedObject

@property (nonatomic, retain) NSString * timestamp;
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSSet *values;
@end

@interface EntityClass (CoreDataGeneratedAccessors)

- (void)addValuesObject:(EntityClassItem *)value;
- (void)removeValuesObject:(EntityClassItem *)value;
- (void)addValues:(NSSet *)values;
- (void)removeValues:(NSSet *)values;

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClassItemValue : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * value;
@property (nonatomic, retain) EntityClassItem *entityClassItem;
#导入
#进口
@类EntityClassItem;
@接口实体类:NSManagedObject
@属性(非原子,保留)NSString*时间戳;
@属性(非原子,保留)NSString*类型;
@属性(非原子,保留)NSSet*值;
@结束
@接口EntityClass(CoreDataGeneratedAccessor)
-(void)addValuesObject:(EntityClassItem*)值;
-(void)移除ValuesObject:(EntityClassItem*)值;
-(void)addValues:(NSSet*)值;
-(void)移除值:(NSSet*)值;
#进口
#进口
@类EntityClassItem;
@接口实体类:NSManagedObject
@属性(非原子,保留)NSString*时间戳;
@属性(非原子,保留)NSString*类型;
@属性(非原子,保留)NSSet*值;
@结束
@接口EntityClass(CoreDataGeneratedAccessor)
-(void)addValuesObject:(EntityClassItem*)值;
-(void)移除ValuesObject:(EntityClassItem*)值;
-(void)addValues:(NSSet*)值;
-(void)移除值:(NSSet*)值;
#进口
#进口
@类EntityClassItem;
@接口EntityClassItemValue:NSManagedObject
@属性(非原子,保留)NSString*名称;
@属性(非原子,保留)NSString*值;
@属性(非原子,保留)EntityClassItem*EntityClassItem;

我在对文档进行了大量调试和重读后,终于找到了答案。我对以下方面缺乏了解:

mapKeyPath:@"foo" toRelationship:@"bar" withMapping:fooBar];

正如文档明确指出的那样,除了JSON负载中的节点外,mapKeyPath还必须同时匹配要映射到的对象的属性。我的有效负载案例不匹配,因此失败。

我从未使用过
RestKit
,但奇怪的是,您同时拥有
mapKeyPath:
setMapping:
调用
值。我那没受过教育的孩子2美分。
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClass : NSManagedObject

@property (nonatomic, retain) NSString * timestamp;
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSSet *values;
@end

@interface EntityClass (CoreDataGeneratedAccessors)

- (void)addValuesObject:(EntityClassItem *)value;
- (void)removeValuesObject:(EntityClassItem *)value;
- (void)addValues:(NSSet *)values;
- (void)removeValues:(NSSet *)values;

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClass : NSManagedObject

@property (nonatomic, retain) NSString * timestamp;
@property (nonatomic, retain) NSString * type;
@property (nonatomic, retain) NSSet *values;
@end

@interface EntityClass (CoreDataGeneratedAccessors)

- (void)addValuesObject:(EntityClassItem *)value;
- (void)removeValuesObject:(EntityClassItem *)value;
- (void)addValues:(NSSet *)values;
- (void)removeValues:(NSSet *)values;

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class EntityClassItem;

@interface EntityClassItemValue : NSManagedObject

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * value;
@property (nonatomic, retain) EntityClassItem *entityClassItem;
mapKeyPath:@"foo" toRelationship:@"bar" withMapping:fooBar];