gpt4 book ai didi

objective-c - 从 '(NSNumber) -> NSNumber' 转换为无关类型 '(Any) -> Any' 总是失败

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:41 27 4
gpt4 key购买 nike

我转换这个 Objective-C 函数:

- (NSArray *)grt_map:(id (^)(id))block {
NSMutableArray *newArray = [NSMutableArray array];
[self enumerateObjectsUsingBlock:^(id item, NSUInteger index, BOOL *stop) {
id obj = block(item);
if (obj) {
[newArray addObject:obj];
}
}];
return newArray;
}

...进入 swift :

public func grt_map(block:((Any) -> Any)) -> NSArray {
let array = NSMutableArray()
self.enumerateObjects ({ (item:Any, index:Int, stop: UnsafeMutablePointer<ObjCBool>)->Void in
if (block(item) != nil) {
array.add(item)
}
})
return array;
}

但是我得到一个错误:

Cast from '(NSNumber) -> NSNumber' to unrelated type '(Any) -> Any' always fails

我该如何解决?

最佳答案

如果对 nsarray 进行扩展,你应该记住它需要可以转换为 objc 类型的对象。改变这个:

public func grt_map(block:((Any) -> Any)) -> NSArray

对此:

public func grt_map(block:((AnyObject?) -> AnyObject? )) -> NSArray

对于使用 Any,扩展名应该是 Array,而不是 NSArray

更新像这样测试: array.grt_map(block: {(item: AnyObject?) in ...}

关于objective-c - 从 '(NSNumber) -> NSNumber' 转换为无关类型 '(Any) -> Any' 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com