我正在尝试将Swift Int64
数组转换为NSArray
,其值为NSNumber
。
@interface A : NSObject
- (void)bar:(NSArray *)tips;
@end
Swift类继承了这个Objective-C类:
class B : A {
func foo(tips : [Int64]) {
self.bar(tips)
}
}
Swift代码无法编译时出现以下错误:
Type '[Int64]' does not conform to protocol 'AnyObject'
如何使用[Int64]
个实例将NSArray
转换为NSNumber
?
P.S。我尝试了很多东西,找不到一个简单的方法来做到这一点:
self.bar(NSArray(array: tips))
self.bar(tips as NSArray)
编辑:此问题与尝试从单独的NSArray
对象构建新Int64
无关,而是将现有数组[Int64]
转换为{{ 1}}
答案 0 :(得分:5)
映射:
func foo(tips : [Int64]) {
bar(tips.map { NSNumber(longLong: $0) })
}
这将构建一个新数组,将所有Int64
包装在NSNumber
中,这个新数组应该可以转换为NSArray
而没有任何问题。