objective-c - 数组。如何实现 map 功能?

标签 objective-c ios nsarray mapreduce

在 iOS 中,我想为 NSArray 实现映射功能。这是一个应用于数组的每个元素的函数。实现这一点的最佳方法是什么?

谢谢,
道格

最佳答案

您正在寻找 apply,因为 map 应该返回一个包含转换值的新数组。

但是,您可以通过创建自定义类别使用您寻找的方法来扩充 NSArray。这里有两个例子 - apply 和 map:

@implementation NSArray (CMMap)
- (NSArray *) map:(id(^)(id obj))block {
    NSMutableArray *a = @[].mutableCopy;
    for (id o in self) {
        id on = block(o);
        if (!on) {
            NSLog(@"NSArray::map() - object returned by block is nil!");
            abort();
        }
        [a addObject: on];
    }
    return [NSArray arrayWithArray: a];
}

- (void) apply:(void(^)(id obj))block {
    for (id o in self) {
        block(o);
    }
}
@end

关于objective-c - 数组。如何实现 map 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10030109/

相关文章:

objective-c - "message was received but not handled"KVO

iOS:方向更改后弹出回 View Controller 时约束会中断

ios - 如何将 C int 放入 NSArray?

ios - NSPredicate 用于包含内部数组的字典数组

iphone - 如何排除连接2个NSArray?

objective-c - 使用正则表达式拆分字符串 - objective-C

ios - 如何在 ios 中使用 nexmo 向多个号码发送短信?

ios - 动态水平可滚动表格 View 标题

ios - 使用 Express 连接到 Amazon RDS

ios - 未传播快速强制展开异常