Ios Restkit提供映射错误:

Ios Restkit提供映射错误:,ios,objective-c,core-data,restkit,afnetworking,Ios,Objective C,Core Data,Restkit,Afnetworking,我正在尝试映射来自Foursquare(FS)调用的结果。当我使用AFNetworking时,它会按预期返回FS结果(JSON)。当我尝试使用Restkit调用RKEntityMapping或RKObjectMapping时,我得到以下错误 RKMapperOperation.m:98添加映射错误:找不到任何属性或关系映射的可映射值 有什么建议吗?我错过什么了吗?我知道我没有一些位置信息的关系映射设置,但我似乎无法让它映射顶级的东西 RESTKIT=============== // --- V

我正在尝试映射来自Foursquare(FS)调用的结果。当我使用AFNetworking时,它会按预期返回FS结果(JSON)。当我尝试使用Restkit调用RKEntityMapping或RKObjectMapping时,我得到以下错误

RKMapperOperation.m:98添加映射错误:找不到任何属性或关系映射的可映射值

有什么建议吗?我错过什么了吗?我知道我没有一些位置信息的关系映射设置,但我似乎无法让它映射顶级的东西

RESTKIT===============

// --- VENUE MAPPING ------------------------------

RKEntityMapping *venueMapping = [RKEntityMapping mappingForEntityForName:@"Venue"
                                                    inManagedObjectStore:objectManager.managedObjectStore];

[venueMapping addAttributeMappingsFromArray:@[@"name"] ];

[venueMapping addAttributeMappingsFromDictionary:@{
 @"id": @"venueID"
 }];


[venueMapping setIdentificationAttributes:@[@"venueID"] ];



// Routes for Users
[self.foursquareManager.router.routeSet addRoute:[RKRoute routeWithClass:[Venue class]
                                                    pathPattern:@"v2/venues/search"
                                                         method:RKRequestMethodGET]];


// Register our mappings with the provider
RKResponseDescriptor *venueResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                                       pathPattern:@"v2/venues/search"
                                                                                           keyPath:nil
                                                                                       statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

RKResponseDescriptor *venueDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                               pathPattern:@"v2/venues/search"
                                                                                   keyPath:nil
                                                                               statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];


[self.foursquareManager addResponseDescriptor:venueResponseDescriptor];
[self.foursquareManager addResponseDescriptor:venueDescriptor];

[self.foursquareManager getObject:nil
                                      path:@"v2/venues/search"
                                parameters:@{
                                             @"client_id" : kFourSquareClientID,
                                             @"client_secret" : kFourSquareClientSecret,
                                             @"ll" : searchString,
                                             @"v" : @"20130101"
                                            }

                                   success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

                                       DLog(@"Getting favorites return successful update tableview and CD ");


                                   }
                                   failure:^(RKObjectRequestOperation *operation, NSError *error) {
                                       DLog(@"Getting all favorites failed: %@", [error localizedDescription]);

                                   }];
@interface Venue : NSManagedObject

@property (nonatomic, retain) NSString * venueID;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * verified;

@end
AFN网络=============

// --- VENUE MAPPING ------------------------------

RKEntityMapping *venueMapping = [RKEntityMapping mappingForEntityForName:@"Venue"
                                                    inManagedObjectStore:objectManager.managedObjectStore];

[venueMapping addAttributeMappingsFromArray:@[@"name"] ];

[venueMapping addAttributeMappingsFromDictionary:@{
 @"id": @"venueID"
 }];


[venueMapping setIdentificationAttributes:@[@"venueID"] ];



// Routes for Users
[self.foursquareManager.router.routeSet addRoute:[RKRoute routeWithClass:[Venue class]
                                                    pathPattern:@"v2/venues/search"
                                                         method:RKRequestMethodGET]];


// Register our mappings with the provider
RKResponseDescriptor *venueResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                                       pathPattern:@"v2/venues/search"
                                                                                           keyPath:nil
                                                                                       statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

RKResponseDescriptor *venueDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                               pathPattern:@"v2/venues/search"
                                                                                   keyPath:nil
                                                                               statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];


[self.foursquareManager addResponseDescriptor:venueResponseDescriptor];
[self.foursquareManager addResponseDescriptor:venueDescriptor];

[self.foursquareManager getObject:nil
                                      path:@"v2/venues/search"
                                parameters:@{
                                             @"client_id" : kFourSquareClientID,
                                             @"client_secret" : kFourSquareClientSecret,
                                             @"ll" : searchString,
                                             @"v" : @"20130101"
                                            }

                                   success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

                                       DLog(@"Getting favorites return successful update tableview and CD ");


                                   }
                                   failure:^(RKObjectRequestOperation *operation, NSError *error) {
                                       DLog(@"Getting all favorites failed: %@", [error localizedDescription]);

                                   }];
@interface Venue : NSManagedObject

@property (nonatomic, retain) NSString * venueID;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * verified;

@end
如果我使用AF进行调用,它将完美地返回JSON数据

NSString *searchString = [NSString stringWithFormat:@"%@,  %@",[dictionary objectForKey:@"lat"], [dictionary objectForKey:@"lng"]];
AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"https://api.foursquare.com"]];


NSDictionary *parameters = @{
                             @"client_id" : kFourSquareClientID,
                             @"client_secret" : kFourSquareClientSecret,
                             @"ll" : searchString,
                             @"v" : @"20130101"
                             };

NSMutableURLRequest *request = [client requestWithMethod:@"GET" path:@"/v2/venues/search" parameters:parameters];
DLog(@"");
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {


    NSError *error;
    NSDictionary* json = [NSJSONSerialization
                          JSONObjectWithData:JSON //1
                          options:kNilOptions
                          error:&error];

    NSLog(@"THIS IS A DICTIONARY (or array): %@", JSON);

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"if requestFailed");
}];

[operation start];
我的场地对象==========

// --- VENUE MAPPING ------------------------------

RKEntityMapping *venueMapping = [RKEntityMapping mappingForEntityForName:@"Venue"
                                                    inManagedObjectStore:objectManager.managedObjectStore];

[venueMapping addAttributeMappingsFromArray:@[@"name"] ];

[venueMapping addAttributeMappingsFromDictionary:@{
 @"id": @"venueID"
 }];


[venueMapping setIdentificationAttributes:@[@"venueID"] ];



// Routes for Users
[self.foursquareManager.router.routeSet addRoute:[RKRoute routeWithClass:[Venue class]
                                                    pathPattern:@"v2/venues/search"
                                                         method:RKRequestMethodGET]];


// Register our mappings with the provider
RKResponseDescriptor *venueResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                                       pathPattern:@"v2/venues/search"
                                                                                           keyPath:nil
                                                                                       statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

RKResponseDescriptor *venueDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:venueMapping
                                                                               pathPattern:@"v2/venues/search"
                                                                                   keyPath:nil
                                                                               statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];


[self.foursquareManager addResponseDescriptor:venueResponseDescriptor];
[self.foursquareManager addResponseDescriptor:venueDescriptor];

[self.foursquareManager getObject:nil
                                      path:@"v2/venues/search"
                                parameters:@{
                                             @"client_id" : kFourSquareClientID,
                                             @"client_secret" : kFourSquareClientSecret,
                                             @"ll" : searchString,
                                             @"v" : @"20130101"
                                            }

                                   success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

                                       DLog(@"Getting favorites return successful update tableview and CD ");


                                   }
                                   failure:^(RKObjectRequestOperation *operation, NSError *error) {
                                       DLog(@"Getting all favorites failed: %@", [error localizedDescription]);

                                   }];
@interface Venue : NSManagedObject

@property (nonatomic, retain) NSString * venueID;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * verified;

@end

发现了问题。这将解决它

keyPath:@"response.venues"
FourSquare返回的JSON具有许多属性和信息子数组。关键路径是您需要走到JSON数据的“场所”的路径。如果您只需要获取返回的“位置”信息,您可以使用以下关键路径(遍历层次结构)


你能解释一下为什么它会解决这个问题吗?