将[Int64]的Swift数组转换为NSArray

UrK*_*UrK 5 arrays interop objective-c ios swift

我想斯威夫特的数组转换Int64NSArrayNSNumber价值观.

@interface A : NSObject
- (void)bar:(NSArray *)tips;
@end
Run Code Online (Sandbox Code Playgroud)

Swift类继承了这个Objective-C类:

class B : A {
    func foo(tips : [Int64]) {
        self.bar(tips)
    }
}
Run Code Online (Sandbox Code Playgroud)

Swift代码无法编译时出现以下错误:

Type '[Int64]' does not conform to protocol 'AnyObject'
Run Code Online (Sandbox Code Playgroud)

我怎么能转换[Int64]NSArrayNSNumber实例?

PS我尝试了很多东西,找不到一个简单的方法来做到这一点:

self.bar(NSArray(array: tips))
self.bar(tips as NSArray)
Run Code Online (Sandbox Code Playgroud)

编辑:这个问题涉及不涉及试图建立新NSArray的独立的Int64对象,但现有的数组转换[Int64]NSArray

Nik*_*kin 5

映射它:

func foo(tips : [Int64]) {
    bar(tips.map { NSNumber(longLong: $0) })
}
Run Code Online (Sandbox Code Playgroud)

这将构建一个新的数组,将所有内容包装Int64在中NSNumber,这个新数组应该可以毫无问题地NSArray进行转换。