我创建了实体EY_REGION
并添加了属性。要解析RestKit
值并将数据存储在CoreData
我创建了2个方法
(void)createRegionMappingWithStore:(RKManagedObjectStore *)managedObjectStore saveInDelegate:(AppDelegate *)appDelegate
(NSArray *)getRegionData
Just Am从我的NewConnectionViewController.m
调用此方法。我的问题是,我无法获取数据。问题是什么?我在这里展示了我的代码:
DataAccessHandler.m
@implementation DataAccessHandler
+(void)createRegionMappingWithStore:(RKManagedObjectStore *)managedObjectStore saveInDelegate:(AppDelegate *)appDelegate{
RKEntityMapping *regionMapping = [RKEntityMapping mappingForEntityForName:@"EY_Region" inManagedObjectStore:managedObjectStore];
regionMapping.identificationAttributes = @[@"regionId"];
[regionMapping addAttributeMappingsFromDictionary:@{ @"id" : @"regionId", @"name" : @"regionName", @"code" : @"regionCode",@"last_update":@"lastUpdatedDate",@"is_delete":@"isDelete"}];
RKResponseDescriptor *regionResponseDescriptor =
[RKResponseDescriptor responseDescriptorWithMapping:regionMapping
method:RKRequestMethodGET
pathPattern:EY_REGION
keyPath:@"data.data"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)
];
[appDelegate createObjectManagerForurl:EY_BASE_URL andAddResponseDescriptor:regionResponseDescriptor];
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
}
+(NSArray *)getRegionData{
NSManagedObjectContext *context = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"EY_Region"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"regionId" ascending:YES];
fetchRequest.sortDescriptors = @[descriptor];
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
NSLog(@"fetched objects is: %@",fetchedObjects);
NSLog(@"size is: %lu",[fetchedObjects count]);
return fetchedObjects;
}
NewConnectionViewController.m
#import "NewConnectionViewController.h"
@implementation NewConnectionViewController
-(void)viewDidLoad
{
[super viewDidLoad];
[DataAccessHandler createConnectionMappingWithStore:[self managedObjectStore] saveInDelegate:[self appDelegate]];
[self requestConnectionData];
}
错误是,
NSLocalizedFailureReason =映射操作无法在搜索的关键路径中找到任何嵌套对象表示: 发现输入到映射器的表示包含以下关键路径的嵌套对象表示:Address,Circle,ConnectionNumber,Distribution,Load,MeterNo,Name,Phase,Region,Section,ServiceNo,ServiceStatus,usage 这可能表示您错误配置了映射的关键路径。,NSLocalizedDescription =在搜索的关键路径中找不到可映射的对象表示。,keyPath = null}}}
答案 0 :(得分:0)
首先,您的请求(您没有显示代码)是异步的,因此在查询核心数据时它将无法完成。考虑使用获取的结果控制器而不是数组,以便在添加新数据时获得更新。
其次,您的请求网址(EY_BASE_URL
)和路径模式(EY_REGION
)(您都没有提供详细信息)需要匹配,以便路径模式是请求URL,未包含在对象管理器的基本URL中。
第三,错误显示keyPath=null
,但您的响应描述符代码显示为keyPath:@"data.data"
,因此您显示的代码与实际运行的代码之间存在一些不匹配。
错误消息中的密钥路径中未列出第四个data.data
,甚至data
。您需要根据响应中的预期验证关键路径,并在键路径中仅包含您需要深入查找要映射的实际数据的那些键。
因此,您需要检查一些可能存在错误的事情。