Аннотируйте NSArray<NSNumber *> * в Objective-C, чтобы он был соединен с Array<Int>
Есть ли способ аннотировать NSArray
из NSNumber
:
@property (nonatomic) NSArray<NSNumber *> *myProperty
в Objective-C, так что он будет импортирован в Swift как
var myProperty: [Int]
вместо var myProperty: [NSNumber]
?
я знаю NS_SWIFT_NAME
, но это не позволяет изменить тип.
1 ответ
Решение
К сожалению, вы не можете изменить статический тип при импорте символа из 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>