【问题标题】:Mapping nested array with RestKit/iOS使用 RestKit/iOS 映射嵌套数组
【发布时间】:2012-10-11 06:16:04
【问题描述】:

我需要用 RestKit 映射一个嵌套数组,而且我几乎做到了(我想)。

我需要映射的 JSON,如下所示

[
    {
        _id: "5058670183970a0002000450",
        app_store_url: "http://itunes.apple.com/app/culturonda-alto-adige-sudtirol/id534467629",
        comments: [
            {
                _id: "5058670783970a0002000456",
            },
            {
                _id: "50588d7f83970a000200065c",
            }
        ]
    }
]

我用于存储信息的控制器如下所示:

#import <Foundation/Foundation.h>
#import "CommentData.h"

@interface DesignData : NSObject
    @property (retain, nonatomic) NSString *designId;
    @property (retain, nonatomic) NSSet *commentsRelationship;
@end

还有:

#import <Foundation/Foundation.h>

@interface CommentData : NSObject
    @property (retain, nonatomic) NSString *commentId;
@end

我的映射如下所示:

RKObjectManager *objectManager = [RKObjectManager sharedManager];

RKObjectMapping *commentsMapping = [RKObjectMapping mappingForClass:[CommentData class]];
[commentsMapping mapKeyPathsToAttributes:@"_id", @"commentId", nil];

RKObjectMapping *designMapping = [RKObjectMapping mappingForClass:[DesignData class] ];
[designMapping mapKeyPathsToAttributes:@"_id", @"designId", nil];

[designMapping mapKeyPath:@"comments" toRelationship:@"commentsRelationship" withMapping:commentsMapping];

[objectManager.mappingProvider setMapping:designMapping forKeyPath:@""];

评论进入一个数组,但它没有存储在 cmets 控制器中。如果我像这样在 objecloader 回调中显示 cmets:

DesignData *designData = [objects objectAtIndex:0];
NSLog(@"Loaded %@ ", designData.commentsRelationship);

它给了我:

2012-10-20 22:37:55.258 RestKitTest5[4144:c07] Loaded {(
                                                        <CommentData: 0x8689730>,
                                                        <CommentData: 0x868bed0>,
                                                        <CommentData: 0x868bfe0>,
                                                        <CommentData: 0x868bf50>
                                                        )}

这是一个开始。但我做不到:

DesignData *designData = [objects objectAtIndex:0];
NSLog(@"Loaded %@ ", designData.commentsRelationship.commentId);

那么如何将整个东西存储为一个数组呢?

【问题讨论】:

    标签: objective-c ios json ios6 restkit


    【解决方案1】:

    替换这条线后,我为我工作:

    [designMapping mapKeyPath:@"comments" toRelationship:@"commentsRelationship" withMapping:commentsMapping];
    

    与:

    [designMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"comments" toKeyPath:@"commentsRelationship" withMapping: commentsMapping]];
    

    【讨论】:

      【解决方案2】:

      我已经做得对了,到头来我只是愚蠢。

      我得到了数组,并且数组中的对象是正确的类型(CommentData),所以我所要做的就是循环遍历数组,然后我可以从那里分别处理每个对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        • 2014-09-01
        • 2014-12-30
        • 2012-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多