2016-04-25 7 views
0

Ich stehe vor einem Problem. Der Server hat die Anforderung erhalten, die Zuordnung wurde jedoch nicht korrekt verarbeitet. Ich verstehe nicht, was ich falsch mache.RESTKit-Ausnahme: Bei den gesuchten Schlüsselpfaden wurden keine abbildbaren Objektdarstellungen gefunden

Log:

2016-04-25 19:39:16.114 cifrosvit[1063:15363] I restkit:RKLog.m:49 RestKit logging initialized... 
2016-04-25 19:39:16.413 cifrosvit[1063:15363] I restkit.network:RKObjectRequestOperation.m:150 GET 'http://cifrosvit.com/api/get_info/?info=banners' 
2016-04-25 19:39:17.188 cifrosvit[1063:15505] I restkit.network:RKObjectRequestOperation.m:222 GET 'http://cifrosvit.com/api/get_info/?info=banners' (200 OK/7 objects) [request=0.7722s mapping=0.0021s total=0.8101s] 
2016-04-25 19:41:17.508 cifrosvit[1063:15363] I restkit.network:RKObjectRequestOperation.m:150 GET 'http://cifrosvit.com/api/user.sign_up/?adr=terwtrwe&city=fwferwtw&email=yrurweqrqw%40rfewq.rewq&name=fsdfsdfdsa&password=12345&phone_mob=54323425342' 
2016-04-25 19:41:18.040 cifrosvit[1063:16373] D restkit.object_mapping:RKMapperOperation.m:407 Executing mapping operation for representation: { 
    data =  (
    ); 
    errors =  (
    ); 
    success = true; 
} 
and targetObject: (null) 
2016-04-25 19:41:18.040 cifrosvit[1063:16373] D restkit.object_mapping:RKMapperOperation.m:433 Finished performing object mapping. Results: (null) 
2016-04-25 19:41:18.041 cifrosvit[1063:16374] E restkit.network:RKObjectRequestOperation.m:215 GET 'http://cifrosvit.com/api/user.sign_up/?adr=terwtrwe&city=fwferwtw&email=yrurweqrqw%40rfewq.rewq&name=fsdfsdfdsa&password=12345&phone_mob=54323425342' (200 OK/0 objects) [request=0.5320s mapping=0.0000s total=0.5345s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No response descriptors match the response loaded." UserInfo={NSLocalizedFailureReason=A 200 response was loaded from the URL 'http://cifrosvit.com/api/user.sign_up/?adr=terwtrwe&city=fwferwtw&email=yrurweqrqw%40rfewq.rewq&name=fsdfsdfdsa&password=12345&phone_mob=54323425342', which failed to match all (0) response descriptors:, NSErrorFailingURLStringKey=http://cifrosvit.com/api/user.sign_up/?adr=terwtrwe&city=fwferwtw&email=yrurweqrqw%40rfewq.rewq&name=fsdfsdfdsa&password=12345&phone_mob=54323425342, NSErrorFailingURLKey=http://cifrosvit.com/api/user.sign_up/?adr=terwtrwe&city=fwferwtw&email=yrurweqrqw%40rfewq.rewq&name=fsdfsdfdsa&password=12345&phone_mob=54323425342, NSUnderlyingError=0x7fa58a300000 {Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No mappable object representations were found at the key paths searched." UserInfo={NSLocalizedDescription=No mappable object representations were found at the key paths searched., NSLocalizedFailureReason=The mapping operation was unable to find any nested object representations at the key paths searched: 
The representation inputted to the mapper was found to contain nested object representations at the following key paths: data, errors, success 
This likely indicates that you have misconfigured the key paths for your mappings., keyPath=null, DetailedErrors=(
)}}, keyPath=null, NSLocalizedDescription=No response descriptors match the response loaded.} 

Code:

RKObjectMapping* objectMapping = [RKObjectMapping mappingForClass:[ResponseModel class]]; 
    [objectMapping addAttributeMappingsFromArray:@[@"success", @"errors"]]; 
    [objectMapping addPropertyMapping:[RKRelationshipMapping 
             relationshipMappingFromKeyPath:@"data" 
                  toKeyPath:@"data" 
                  withMapping:[RKObjectMapping mappingForClass:[NSArray class]]] 
    ]; 
    RKResponseDescriptor* responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping 
                      method:RKRequestMethodPOST 
                     pathPattern:@"user.sign_up/" 
                      keyPath:nil 
                     statusCodes:[NSIndexSet indexSetWithIndex:200]]; 
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://cifrosvit.com/api/"]]; 
    RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client]; 
    [objectManager addResponseDescriptor:responseDescriptor]; 
    RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace); 

    [objectManager getObjectsAtPath:responseDescriptor.pathPattern parameters:params success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
     NSLog(@"success"); 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     NSLog(@"failure"); 
    }]; 

ResponseModel Schnittstelle:

@interface ResponseModel : NSObject 

@property NSString* success; 
@property id data; 
@property (strong, nonatomic) NSArray* errors; 

@end 

Anfrage:

{ 
    "success": "true", 
    "data": [], 
    "errors": [] 
} 

Warum RESTKIT immer Fehlerblock aufrufen?

Antwort

1

Möglicherweise müssen Sie nur diese Zeile ändern, da es so aussieht, als würden Sie einen Antwortdeskriptor ohne Antwort einstellen?

[objectManager addResponseDescriptor:self.responseDescriptor]; 

So die self. entfernen, weil es die Instanz-Variable nicht scheint, dass Sie nur eine lokale Variable haben.

verwenden Sie auch method:RKRequestMethodPOST aber die Anfrage mit getObjectsAtPath machen so versagt RestKit GET mit POST übereinstimmen.

+0

Ich finde Fall ist dies Problem. Ich verstehe nicht warum, aber wenn ich die Request-Methode von RKRequestMethodPOST zu RKRequestMethodAny ändere, fängt es an zu arbeiten. Der eigentliche Typ dieser Anfrage ist POST. – couldDog

+1

Ok, guter Punkt, aber es ist kein POST, es ist ein GET, weil Sie 'getObjectsAtPath' verwenden – Wain

+0

Ihre Antwort ist vollständig korrekt. Ich habe diesen Artikel aus der Dokumentation verpasst. Vielen Dank. – couldDog