Параметры метода Objective C в Swift

Возникли некоторые проблемы при вызове метода, объявленного в Objective-C и соединенного со Swift. Я создал метод void прямо рядом с рассматриваемым и могу вызывать его, так что я почти уверен, что это связано с тем, как мост обрабатывает параметры метода.

- (void)foo;

- (NSArray *)fetchProductHistoryForProduct:(Product *)product
                               forCustomer:(Customer *)customer
                                  forField:(Field *)field
                                  forRange:(DatePickerRange *)range
                                 inContext:(CPSPersistenceController *)context;

Затем в файле Swift я называю каждого следующим образом:

modelUtil.foo()

let result = modelUtil.fetchProductHistoryForProduct(product, forCustomer: nil, forField: nil, forRange: nil, inContext: nil)

Свифт жалуется: "Значение типа ModelUtil не имеет члена fetchProductHistoryforProduct"

Не могли бы вы сказать мне, что я делаю не так?

2 ответа

Вы можете увидеть созданный интерфейс для целевого файла c в верхнем левом углу окна редактора. Сгенерированный интерфейс похож на заголовочный файл Swift для вашего файла ObjC, в котором должно быть указано точное имя метода. Также убедитесь, что все файлы, содержащие типы параметров, также добавлены в заголовок моста.

Вы можете использовать автозаполнение Xcode, чтобы найти последовательность вызова. В этом случае forProduct: становится меткой для первого параметра:

let result = modelUtil.fetchProductHistory(forProduct: product, forCustomer: nil, forField: nil, forRange: nil, inContext: nil)
Другие вопросы по тегам