Параметры метода 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)