У меня очень странная проблема при импорте Swift Framework в проект target-c. Проект не удается построить. Я получаю сообщение Parse Issue с сообщением «Ожидаемый тип», исходящим из файла MyFramework-Swift-h, который генерирует Xcode. Предупреждение относится именно к сигнатуре для метода, который принимает типизированный массив в качестве единственного параметра.
Быстрый метод выглядит следующим образом:
@objc public func set(paymentMethods: [PaymentMethod]) -> ParamsBuilder {
params.paymentMethods = paymentMethods
return self
}
И после компиляции это выглядит так:
- (ParamsBuilder * _Nonnull)setWithPaymentMethods:(NSArray<PaymentMethod *> * _Nonnull)paymentMethods SWIFT_WARN_UNUSED_RESULT;
Проблема Parse жалуется на тип NSArray, который, похоже, не понимает. Очень странно, что я нашел ужасное исправление, которое на самом деле не помогает в долгосрочной перспективе. В файле MyFramework-Swift-h вверху находится блок:
#if __has_feature(modules)
@import ObjectiveC;
#endif
Если я вручную добавлю @import UIKit, проект Objective C теперь скомпилируется. Однако я не могу понять, как XCode определяет, что автоматически импортировать. My Framework импортирует UIKit во многих местах, поэтому странно, что он не импортируется. Я также понятия не имею, почему импорт вручную помогает найти тип NSArray!