gra*_*aci 5 dictionary objective-c swift
说我有 NSArray *x = @[@1, @2, @3, @4];
现在说我想要一个类似的数组 @[@2, @4, @6, @8]
在好的斯威夫特,我可以这样做:
xDoubled = x.map({($0) * 2})
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何在Objective-C中做到这一点而不做 -
NSMutableArray *xDoubled = [NSMutableArray new];
for (NSInteger xVal in x) {
[xDoubled addObject:xVal * 2];
}
Run Code Online (Sandbox Code Playgroud)
?
NSArray没有map方法。它有一个enumerateObjectsUsingBlock:方法(和相关的方法)可以做类似的事情;它们不会自动将一个对象转换为另一个对象并返回另一个数组,但您可以轻松地手动完成此操作。但是,它们与您的示例并没有太大不同。
我编写了一个名为collectionsNSArray的库,它向NSDictionary、 和中添加了一个映射方法(以及其他面向集合的方法)NSSet。