【问题标题】:Method cannot be marked @objc because the type of the parameter 3 cannot be represented in Objective-C方法不能标记为@objc,因为参数3的类型不能在Objective-C中表示
【发布时间】:2019-05-17 07:47:54
【问题描述】:

我该如何解决这个问题?任何人都可以帮助我吗?谢谢!

我使用的是 Xcode 10.1,swift 4.2

@objc func searchVenues(_ coordinate: CLLocationCoordinate2D,radius: Float = 10000.0, completion: @escaping (Result<[XPVenue],Error>) -> Void) {
   // ...
}

方法不能标记@objc,因为参数3的类型不能在Objective-C中表示

【问题讨论】:

  • Result 类型也标记为@objc..
  • 重构你的代码,这样你就不必将它标记为@objc了?
  • 你真的需要@objc吗?
  • 如果你编写一个没有完成处理程序的包装方法并将其标记为@objc(这就是我所说的重构)并将其用作你的选择器呢?
  • 类型 Result 在 Objective-C 中不可用。如果你想在 ObjC 中使用它,你需要重新设计你的方法。

标签: ios swift swift4.2 xcode10.1


【解决方案1】:

看下面代码,这样使用选择器方法#selector(searchVenues(_:radius:completion:))

button.addTarget(self, action: #selector(searchVenues(_:radius:completion:)), for: .touchUpInside)

@objc func searchVenues(_ coordinate: CLLocationCoordinate2D,radius: Float = 10000.0, completion: @escaping (Result<[XPVenue],Error>) -> Void) {
   // ...
}

【讨论】:

    猜你喜欢
    • 2016-09-12
    • 2018-09-08
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多