这是Ray Wenderich iOS 7 Best Practices article的代码片段。他基本上是获取一个JSON文件并为列表中的每个创建一个模型;
return [[self fetchJSONFromURL:url] map:^id(NSDictionary *json) {
RACSequence *list = [json[@"list"] rac_sequence];
return [[list map:^(NSDictionary *item) {
return [MTLJSONAdapter modelOfClass:[WXDailyForecase class] fromJSONDictionary:item error:nil];
}] array];
}];
array
做了什么?
答案 0 :(得分:0)
RACSequence
的实例方法map
返回另一个RACSequence
实例。因此,如果您需要NSArray
个实例,则必须使用-[RACSequence array]
方法评估整个序列并将其值转换为NSArray
。
顺便说一下,map
方法是懒惰地执行的;当序列产生值时,您将逐个接收它们,直到您取消订阅或到达序列的末尾。但是,如果所有值都不可用,则调用-array
方法将阻塞当前线程(直到它们全部可用,此时该方法将取消阻塞并返回该数组)。