2

有没有办法注释NSArray一个NSNumber

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

在 Objective-C 中,以便在 Swift 中导入为

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

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

4

1 回答 1

2

不幸的是,从 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>
于 2017-10-29T07:26:53.703 回答