使用ReactiveCocoa进行数据转换

时间:2014-04-04 13:46:49

标签: objective-c cocoa reactive-cocoa

我正在尝试使用ReactiveCocoa并尝试解决一个简单的问题。

我有一个rest-client,它以JSON方式获取数据

{
    "entries": [
        {
            "objectId": "123",
            "name": "EntryName"
        },
        ...
    ],
    "count": 100500
}

描述此响应的模型

@interface MYEntriesList : MYJSONSerializableModel

@property (nonatomic, copy, readonly) NSArray *entries;
@property (nonatomic, assign, readonly) NSUInteger count;

@end

条目的模型

@interface MYEntry : MYJSONSerializableModel

@property (nonatomic, copy, readonly) NSString *objectId;
@property (nonatomic, copy, readonly) NSString *name;
@property (nonatomic, copy) NSString *itemId;

@end

所以我的任务是在获取所有条目后为每个条目设置itemId

我使用RACCommand执行获取请求,MYAPIClientRACSignal中返回-fetchContent:,在从JSON反序列化为{{1}后发送next:实例。

我目前的实现看起来像这样

MYEntriesList

我想知道这个实现是否符合"的想法" ReactiveCocoa有什么其他方法可以实现吗?

1 个答案:

答案 0 :(得分:0)

您可以更改项目ID设置更多"功能"但这真的取决于你。在地图块内:

return [[list.entries.rac_sequence map:^id(MYEntriesList *entry) {
                                       @strongify(self);
                                       entry.itemId = self.item.objectId;
                                   }] array];