有没有办法注释 NSNumber
的 NSArray
:
@property (nonatomic) NSArray<NSNumber *> *myProperty
在 Objective-C 中,这样它将在 Swift 中导入为
var myProperty: [Int]
而不是 var myProperty: [NSNumber]
?
我知道 NS_SWIFT_NAME
,但这不允许更改类型。
最佳答案
遗憾的是,从 Objective-C 导入符号时无法更改静态类型。
但是您可以分配一个 Swift Int
数组而不进行任何类型转换(假设 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>
关于objective-c - 在 Objective-C 中注释 NSArray<NSNumber *> * 以便桥接到 Array<Int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46997387/