【发布时间】:2018-04-10 09:04:42
【问题描述】:
有没有办法注释NSArray 的NSNumber:
@property (nonatomic) NSArray<NSNumber *> *myProperty
在 Objective-C 中,以便在 Swift 中导入为
var myProperty: [Int] 而不是var myProperty: [NSNumber]?
我知道NS_SWIFT_NAME,但这不允许更改类型。
【问题讨论】:
-
你能解释清楚一点吗?你需要一个
Int数组或NSNumber数组吗?或者可能是目标 c 中的Int数组? -
Swift 中的
Int数组来自 Objective-C 中的NSArray<NSNumber *> *。 -
在问了这个问题后,我又研究了一点。我不认为这是可能的。如果您查看
UIGestureRecognizer的allowedTouchTypes属性。那也是一个NSArray<NSNumber *> *返回类型,并在Swift 中作为[NSNumber]导入。 -
@Trenskow 您可以从您的数字数组
[NSNumber]中获取任何元素并访问其intValue属性,该属性将返回Int。你也可以映射所有元素numbers.map{$0.intValue}会返回一个Int数组[Int] -
@Trenskow 如果你正在使用 NSArray,你需要从
Any转换为NSNumbernumbers.flatMap{($0 as? NSNumber)?.intValue}。但是你应该使用 Swift 原生数组类型
标签: objective-c swift types bridging