相关疑难解决方法(0)

什么是JS的`map()`函数的Objective-C等价物?

什么是JS的map()功能的Objective-C等价物?我会使用NSFastEnumeration并自己应用该功能吗?

javascript porting objective-c

12
推荐指数
3
解决办法
1万
查看次数

目标C中Swift的.map的等价物?

说我有 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)

dictionary objective-c swift

5
推荐指数
1
解决办法
2485
查看次数

如何在像obj-c的Map方法的ruby中迭代时跳过对象

使用这里的答案,这个方法在obj-c中实现类似于ruby的映射:

- (NSArray *)mapObjectsUsingBlock:(id (^)(id obj, NSUInteger idx))block {
    NSMutableArray *result = [NSMutableArray arrayWithCapacity:[self count]];
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [result addObject:block(obj, idx)];
    }];
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果在应用块时发生错误,我怎么能跳过一个对象?通常要跳过枚举器中的某些内容,只需使用该return命令,但这不是上述方法中的一个选项,因为该块应该返回一些内容.

在这个例子中我用return跳过但得到一个错误:

NSArray *mappedArray = [objArray mapObjectsUsingBlock:^(id obj, NSUInteger i) {
    // i don't want this obj to be included in final array
    // so I try to skip it
    return;   // ERROR:incompatible block pointer types sending 
              // 'void(^)(__strong id, …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa objective-c ios objective-c-blocks

3
推荐指数
1
解决办法
297
查看次数

使用KVC的NSArray中的NSDictionary

是否可以根据密钥属性名称从CALayer的NSArray中使用KVC获取NSDictionary?我尝试使用-dictionaryWithValuesForKeys :,但是返回一个NSArray。任何的想法?

   NSArray *tempArray = [self.layer.sublayers copy];
   NSArray *ListName = [self.layer.sublayers valueForKey:@"name"];

   NSDictionary *tmpD= [tempArray dictionaryWithValuesForKeys:ListName];
Run Code Online (Sandbox Code Playgroud)

谢谢

cocoa ios

1
推荐指数
1
解决办法
232
查看次数