在 Objective-C 中注释 NSArray<NSNumber *> * 以便桥接到 Array<Int>

Annotate NSArray<NSNumber *> * in Objective-C so that it is bridged to Array<Int>

有没有办法注释 NSNumberNSArray:

@property (nonatomic) NSArray<NSNumber *> *myProperty

in Objective-C,这样它将在 Swift 中导入为

var myProperty: [Int] 而不是 var myProperty: [NSNumber]?

我知道 NS_SWIFT_NAME,但这不允许更改 类型

遗憾的是,从 Objective-C 导入符号时无法更改静态类型。

但是您可以在不进行任何类型转换的情况下分配 Swift Int 数组(假设 foo 是 ObjC class 的一个实例)。但是类型没有改变。

foo.myProperty = [1, 2, 3, 4, 5]
print(type(of: foo.myProperty)) // Optional<Array<NSNumber>>

另一方面,要获得不同的 [Int] 类型,您必须转换类型

let mySwiftProperty = foo.myProperty as! [Int]
print(type(of: mySwiftProperty)) // Array<Int>