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