iphone - 对象映射 Restkit 不映射嵌套对象
<p><p>我正在尝试映射来自具有 2 个属性的服务器的响应:</p>
<ul>
<li>一个数字,它是数组中对象的计数</li>
<li>我已经在其他类中映射的数组用户对象。</li>
</ul>
<p>这就是我拥有类(class)模型的方式:</p>
<p> <img src="/image/IJICy.png" alt="enter image description here"/> </p>
<p>及其与具有“参与者”关系的用户类相关。</p>
<p>我知道我要映射的嵌套类正在工作,因为我在其他类中使用它并且效果很好,但是这个实现不同,所以我不知道如何映射它。</p>
<p>我的课上有这个:</p>
<p><strong>.h 类:</strong></p>
<pre><code>#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "NSManagedObject+Convenience.h"
@interface DUParticipant : NSManagedObject
@property (nonatomic, retain) NSNumber * participantsCount;
@property (nonatomic, retain) NSSet *participants;
+ (RKEntityMapping *)mapping;
+ (void)configMapping;
@end
</code></pre>
<p><strong>.m 类</strong></p>
<pre><code>#import "DUParticipant.h"
#import "DUUser+Ext.h"
@implementation DUParticipant
@dynamic participantsCount;
@dynamic participants;
+ (RKEntityMapping *)mapping
{
RKEntityMapping* map = ;
[map addAttributeMappingsFromDictionary:@{
@"participants_count": @"participantsCount"
}];
return map;
}
+(void) configMapping{
RKObjectManager* man= ;
RKEntityMapping* map = ;
[man addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:map pathPattern:@"/v1/users/participants" keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];
RKObjectMapping *requestMapping = ;
[requestMapping addAttributeMappingsFromDictionary:@{
@"participants_count": @"participantsCount"
}];
[map addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"participants"
toKeyPath:@"participants"
withMapping:]];
[man addRequestDescriptor:[RKRequestDescriptor requestDescriptorWithMapping:requestMapping
objectClass: rootKeyPath:@"DUParticipant"]];
}
@end
</code></pre>
<p>而json的响应是:</p>
<pre><code>{
"participants_count": 1,
"participants": [
{
"participant": {
"id": 3,
"gender": "M",
"name": "Oscar",
"lastname": "Lares",
"username": "CaLe",
"email": "[email protected]",
"bio": "UX Designer! Mac Geek, Computers, Gadgets and Movies lover!",
"created_at": "2012-07-28T18:34:27Z",
"updated_at": "2013-07-29T13:05:21Z",
"cover": null,
"avatar": {
"id": 108,
"original": "https://duuin.s3.amazonaws.com/uploads/image/file/108/photo.jpg",
"thumbnail": "https://duuin.s3.amazonaws.com/uploads/image/file/108/thumb_photo.jpg"
}
}
}
]
</code></pre>
<p>**** ** 编辑** ****
这是我在日志控制台中的内容,它是 json 响应:</p>
<pre><code>response.body =
{
"participants_count": 2,
"participants": [
{
"participant": {
"id": 3,
"gender": "M",
"name": "blabla",
"lastname": "blabla",
"username": "blabla",
"email": "blabla",
"bio": "blablablablablabla",
"created_at": "2012-07-28T18:34:27Z",
"updated_at": "2013-07-29T13:05:21Z",
"cover": null,
"avatar": {
"id": 108,
"original": "blabla",
"thumbnail": "blabla"
}
}
},
{
"participant": {
"id": 1,
"gender": "M",
"name": "blabla",
"lastname": "blabla",
"username": "blabla",
"email": "blabla",
"bio": "blabla",
"created_at": "2012-07-22T20:30:18Z",
"updated_at": "2013-07-31T03:52:26Z",
"cover": {
"id": 21,
"original": "blabla",
"thumbnail": "blabla"
},
"avatar": {
"id": 19,
"original": "blabla",
"thumbnail": "blabla"
}
}
}
]
}
</code></pre>
<p>以及日志中的对象:</p>
<pre><code>2013-08-01 13:35:43.949 duuin Participant: <NSManagedObject: 0x16d7ef00> (entity: DUParticipant; id: 0x16d74170 <x-coredata://1C844BC7-AF17-4D27-90F9-9F5B8ACDF848/DUParticipant/p86> ; data: {
participants = nil;
participantsCount = 2;
})
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我认为问题在于您的嵌套类映射。它可能在其他时候也能正常工作,但我猜上下文是不同的。在您显示的代码中,参与者位于字典中的 <code>participant</code> 键中。这需要反射(reflect)在映射中的所有键中。</p>
<hr/>
<p>大概你的映射当前有:</p>
<pre><code>@"gender" -> @"gender"
</code></pre>
<p>但是对于您显示的 JSON,它必须是:</p>
<pre><code>@"participant.gender" -> @"gender"
</code></pre></p>
<p style="font-size: 20px;">关于iphone - 对象映射 Restkit 不映射嵌套对象,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/17984176/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/17984176/
</a>
</p>
页:
[1]