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

时间:2015-03-24 13:09:05

标签: ios objective-c arrays swift interop

我正在尝试将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}}

1 个答案:

答案 0 :(得分:5)

映射:

func foo(tips : [Int64]) {
    bar(tips.map { NSNumber(longLong: $0) })
}

这将构建一个新数组,将所有Int64包装在NSNumber中,这个新数组应该可以转换为NSArray而没有任何问题。