1

调用在 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)

Swift 抱怨“ 'ModelUtil' 类型的值没有成员 'fetchProductHistoryforProduct'

你能告诉我我做错了什么吗?

4

2 回答 2

1

您可以使用 Xcode 自动完成功能来查找调用序列。在这种情况下,forProduct:成为第一个参数的标签:

let result = modelUtil.fetchProductHistory(forProduct: product, forCustomer: nil, forField: nil, forRange: nil, inContext: nil)
于 2017-11-05T23:26:20.497 回答
1

您可以从编辑器窗口的左上角看到为目标 c 文件生成的界面。生成的接口就像你的 ObjC 文件的 Swift 头文件,它应该告诉你方法的确切名称。还要确保包含参数类型的所有文件也添加到桥接头中。

于 2017-11-05T23:22:42.890 回答