在 Objective-C 中注释 NSArray<NSNumber *> * 以便桥接到 Array<Int>
Annotate NSArray<NSNumber *> * in Objective-C so that it is bridged to Array<Int>
有没有办法注释 NSNumber
的 NSArray
:
@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>
有没有办法注释 NSNumber
的 NSArray
:
@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>