【问题标题】:Objective-C Method Parameters in SwiftSwift 中的 Objective-C 方法参数
【发布时间】:2017-11-05 22:59:26
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c swift objc-bridging-header


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        相关资源
        最近更新 更多