我正在使用RestKit来引入可能有子注释的注释(并且这些子可能有子项等)。相同类型的RestKit嵌套对象 - JSON集合错误
我能够深入地0条评论没有问题。我有每个深度0评论的评论对象数组。每个父注释都会填充正确数量的子注释,但是子项内的所有属性均为零(只有深度为0的父项填充了真实数据)。 RestKit给我的警告:
W restkit.object_mapping:RKMappingOperation.m:645警告:检测到包含另一个集合的集合的关系映射。这可能不是你想要的。考虑使用KVC集合运算符(如@unionOfArrays)来扁平您的可映射集合。
W¯¯restkit.object_mapping:RKMappingOperation.m:646的关键路径“comments.comments”产生集合包含另一个集合,而不是对象的集合:
此外,每个属性我想在一个映射子,我收到此消息(由属性类型的变化)
。Êrestkit.object_mapping:RKMappingOperation.m:在的keyPath“vote_count”的值440无法改造型的表示“的NSNumber”:错误域=组织。 restkit.RKValueTransformers.ErrorDomain代码= 3002“失败的值转换”( )'到NSNumber:没有任何2 va咨询过的鲁伊变压器是成功的。“ UserInfo = 0x8e68280 {detailedErrors =( “Error Domain = org.restkit.RKValueTransformers.ErrorDomain Code = 3002 \”给定的值不是'NSNumber'的实例\“UserInfo = 0x8e681e0 {NSLocalizedDescription =给定值尚未'NSNumber'}“的一个实例,” “错误域= org.restkit.RKValueTransformers.ErrorDomain代码= 3000 \”
NSNull
类型的预期inputValue
,但得到__NSArrayI
。\“UserInfo = 0x8e68210 {NSLocalizedDescription =期望inputValue
键入NSNull
,但得到了__NSArrayI
}”),NSLocalizedDescription =的值变换失败 '( )' 到的NSNumber:无参考的2个值变压器的成功}
尽管有这个警告,我相信这是我想要的 - 但它在绘制子对象方面苦苦挣扎。它抱怨说,当它期望属性类型时它“得到了一个NSArray”,所以我假设我正在做我的属性映射不正确。
这是我的映射:
+ (RKMapping *) dnCommentMapping {
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[DNComment class]];
[mapping addAttributeMappingsFromDictionary:@{
@"id": @"commentId",
@"body": @"body",
@"body_html": @"bodyHTML",
@"created_at": @"createdAt",
@"depth": @"depth",
@"vote_count": @"voteCount",
@"user_id": @"userID",
@"user_display_name": @"userDisplayName",
}];
[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"comments.comments"
toKeyPath:@"comments"
withMapping:mapping]];
return mapping;
}
这是我的目标
@interface DNComment : NSObject
@property (nonatomic, assign) NSInteger commentId;
@property (nonatomic, copy) NSString *body;
@property (nonatomic, copy) NSString *bodyHTML;
@property (nonatomic, copy) NSDate *created_at;
@property (nonatomic, assign) NSInteger depth;
@property (nonatomic, assign) NSInteger voteCount;
@property (nonatomic, copy) NSDate *createdAt;
@property (nonatomic, assign) NSInteger userID;
@property (nonatomic, copy) NSString *userDisplayName;
@property (nonatomic, strong) NSArray *comments;
@end
我RKResponseDescriptor
RKMapping *mapping = [DNAMappingProvidor dnCommentMapping];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:/api/v1/stories/1
keyPath:@"story.comments"
statusCodes:statusCodeSet];
您可以在图像中看到,深度0条评论被填充,它创建正确数量的孩子(和他们的孩子数量是正确的),但他们没有填充。
这里是JSON的一个例子,我试图映射
{
"story": {
"badge": "discussion",
"comment": "THE STORY",
"comments": [
{
"body": "THIS IS MY COMMENT - I GET MAPPED FINE",
"body_html": "<p>THIS IS MY COMMENT - I GET MAPPED FINE</p>\n",
"comments": [
{
"body": "THIS IS MY CHILD RESPONSE - NONE OF MY PROPERTIES GET SET",
"body_html": "<p>THIS IS MY CHILD RESPONSE - NONE OF MY PROPERTIES GET SET</p>\n",
"comments": [
{
"body": "THIS IS MY CHILD'S CHILD RESPONSE - NONE OF MY PROPERTIES GET SET",
"body_html": "<p>THIS IS MY CHILD'S CHILD RESPONSE - NONE OF MY PROPERTIES GET SET </p>\n",
"comments": [
],
"created_at": "2014-02-17T21:07:13Z",
"depth": 2,
"id": 41665,
"url": "https://www.www.com",
"user_display_name": "A M.",
"user_id": 201,
"user_job": "Job Title",
"user_portrait_url": "image.png",
"user_url": "user.com",
"vote_count": 1
}
],
"created_at": "2014-02-17T20:50:05Z",
"depth": 1,
"id": 41655,
"url": "https://www.www.com",
"user_display_name": "M K.",
"user_id": 3517,
"user_job": "Job Title",
"user_portrait_url": "image.png",
"user_url": "user.com",
"vote_count": 2
}
],
"created_at": "2014-02-17T20:14:47Z",
"depth": 0,
"id": 41649,
"url": "www.www.com",
"user_display_name": "A M.",
"user_id": 201,
"user_job": "Job Title",
"user_portrait_url": "image.com",
"user_url": "user.com",
"vote_count": 32
},
谢谢
我知道有一点我只是在“评论”,但一定是与其他(不正确)组合。谢谢,这是一个简单的修复! – enab