我正在使用Restkit與對象映射,但我似乎得到一個錯誤,說Encountered errors during mapping: Expected an object mapping for class of type 'Rating', provider returned one for 'Error'
- 現在我已經設置映射和序列化的評級和錯誤對象,所以我不瞭解它爲什麼會感到困惑。誰能幫忙?Restkit對象映射在映射期間遇到錯誤
這是映射從類返回的
// Rating class
+ (RKObjectMapping *)getRestKitObjectMapping {
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Rating class]];
[mapping mapAttributes:@"id", @"mics", @"mdate", @"ipaddress", nil];
[mapping mapKeyPath:@"user_id" toAttribute:@"userID"];
[mapping mapKeyPath:@"fid" toAttribute:@"fid"];
return mapping;
}
// Error class
+ (RKObjectMapping *)getRestKitObjectMapping {
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Error class]];
[mapping mapKeyPath:@"code" toAttribute:@"code"];
[mapping mapKeyPath:@"message" toAttribute:@"message"];
return mapping;
}
這是路由
[[RKObjectManager sharedManager].router routeClass:[Rating class] toResourcePath:@"/mic/:id"];
[[RKObjectManager sharedManager].router routeClass:[Rating class] toResourcePath:@"/mic" forMethod:RKRequestMethodPOST];
[[RKObjectManager sharedManager].mappingProvider setMapping:[Rating getRestKitObjectMapping] forKeyPath:@"ratings"];
[[RKObjectManager sharedManager].mappingProvider setMapping:[Error getRestKitObjectMapping] forKeyPath:@"error"];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:[[Rating getRestKitObjectMapping] inverseMapping] forClass:[Rating class]];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:[[Error getRestKitObjectMapping] inverseMapping] forClass:[Error class]];
Rating *rating = [[Rating alloc] init];
[[RKObjectManager sharedManager] postObject:rating delegate:self];
這些都是委託方法的對象,在didLoadObjects
不會得到所謂
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error
{
NSLog(@"Object loading failed with error: %@ ----- body: %@", error.localizedDescription, objectLoader.response.bodyAsString);
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSLog(@"Objects received: %@", objects);
NSLog(@"Respond body: %@", objectLoader.response.bodyAsString);
}
這裏是JSON響應
{"error":{"error":1,"code":342,"message":"You have already rated this one"}}
另外,當我看到我的REST PHP後端上的$ _POST值時,它實際上是空的,這意味着它沒有收到發佈對象......爲什麼是這樣?我的路由似乎沒問題?
我確實擁有對後端的控制權,但是如果我給出403的HTTP狀態代碼,我仍然可以提供JSON數據嗎? – Wasim