下面是我返回的 JSON 响应:
{
"notificationId": 121,
"activities": [
143,
149]
}
下面是映射:
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[mapping addAttributeMappingsFromDictionary:@{@"notificationId" : @"notificationId",
@"activities": @"activities"}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:nil
keyPath:@""
statusCodes:statusCodeSet];
[self.objectManager postObject:invitation path:@"/notifications" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSString *notificationId1 = [mappingResult.dictionary valueForKey:@"notificationId"];
NSArray *activitesArray1 = [mappingResult.dictionary valueForKey:@"activities"];
NSString *notificationId2 = [mappingResult.dictionary objectForKey:@"notificationId"];
NSArray *activitesArray2 = [mappingResult.dictionary objectForKey:@"activities"];
NSLog(@"notificaiton ID %@", notificationId1);
NSLog(@"Activites %@", activitesArray1);
NSLog(@"notification ID %@", notificationId2);
NSLog(@"Activites %@", activitesArray2);
NSLog(@"Activites Array %@", activitesArray);
NSLog(@"mappingResult Dictionary %@", mappingResult.dictionary);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failusre");
}];
日志:
2014-04-21 19:17:51.273 App[57446:4403] I restkit.network:RKObjectRequestOperation.m:250 POST 'http://www.domain.com/notifications' (200 OK / 1 objects) [request=0.2371s mapping=0.0035s total=0.2446s]
2014-04-21 19:17:51.274 App[57446:60b] notification ID (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites (null)
2014-04-21 19:17:51.274 App[57446:60b] notification ID (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites (null)
2014-04-21 19:17:51.274 App[57446:60b] Activites Array (
)
2014-04-21 19:17:51.275 App[57446:60b] mappingResult Dictionary {
"" = {
activities = (
143,
149
);
notificationId = 121;
};
}
为什么所有的值都是空值?如何将 notificationId
的值作为 NSString 和 activities
返回数组?这可以在不创建映射类的情况下完成吗?
最佳答案
因为你的响应描述符是错误的。应该是:
[RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodPOST
pathPattern:@"/notifications"
keyPath:nil
statusCodes:statusCodeSet];
以便它与您发送的请求相匹配(POST,而不是 GET 是主要问题)。
关于ios - RESTKit:在没有映射类的情况下映射 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210464/