有没有办法注释NSArray
一个NSNumber
:
@property (nonatomic) NSArray<NSNumber *> *myProperty
在 Objective-C 中,以便在 Swift 中导入为
var myProperty: [Int]
而不是var myProperty: [NSNumber]
?
我知道NS_SWIFT_NAME
,但这不允许更改类型。
有没有办法注释NSArray
一个NSNumber
:
@property (nonatomic) NSArray<NSNumber *> *myProperty
在 Objective-C 中,以便在 Swift 中导入为
var myProperty: [Int]
而不是var myProperty: [NSNumber]
?
我知道NS_SWIFT_NAME
,但这不允许更改类型。
不幸的是,从 Objective-C 导入符号时,您无法更改静态类型。
但是你可以分配一个Int
没有任何类型转换的 Swift 数组(假设foo
是 ObjC 类的一个实例)。但是类型不会改变。
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>