Аннотируйте 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>
Другие вопросы по тегам