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

标签 objective-c swift types bridging

有没有办法注释 NSNumberNSArray:

@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/

相关文章:

ios - 如何在后台上传 PHAssets

objective-c - 将数据添加到 ScrollView /表

swift - 接受参数但不返回值的自动关闭

javascript - 如何将自定义类型转换为原始类型?

objective-c - 在 iPad (phonegap) 应用程序上禁用 "Notification Center"

ios - 响应点击手势时应用程序崩溃

swift - 如何允许用户更改字体 Swift

arrays - swift - 在结构数组上使用 .map

c++ - 我可以在命名空间中重新定义内置类型吗?

标题编号的 MySQL 数据类型?