【问题标题】:Ambiguous use of 'init''init' 的模糊使用
【发布时间】:2020-03-18 16:15:21
【问题描述】:

我尝试用块(关闭)来初始化我的课程,但我得到了

'init' 的模糊使用

一直以来,我在目标 c 中的课程,我尝试在 swift4 中使用它

对象初始化

typedef void (^updateCoordinate)(CLLocationCoordinate2D coordinate);

- (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate Dragable:(BOOL)isDragable updateCoordinate:(updateCoordinate)updateCoordinate;

快速初始化

let map = FAMapViewController.init(coordinate: CLLocationCoordinate2DMake(0, 0), dragable: true) { (coordinate) in  }

NS_SWIFT_NAME 对我没有帮助,我有同样的问题请给任何建议。

【问题讨论】:

  • CLLocationCoordinate2DMake?这是什么版本的 Swift??
  • 我正在使用#import @Alexander
  • 当您输入FAMapViewController.init 时,您会获得哪些自动完成选项?
  • @Fogmeister 截图写在下面,在“Swift init”下

标签: swift


【解决方案1】:

Ambiguous use of 'init' 表示您在 Swift 中进行的 init 调用的签名无法与目标类中的 init 匹配。

我看到这个错误是由调用站点中的简单错误引起的——比如大小写不正确。例如,在您的 Swift init 调用中,您有一个小写的 dragable: true,但在 Objc 初始化中,您有 Dragable:(BOOL)

StackOverflow 充满了不正确大写的例子,例如:

IOS: Ambiguous Use of init(CGImage)

SCNSceneSource init is giving Ambiguous use of 'init(URL:options:)' error

【讨论】:

    【解决方案2】:

    我找到了我的问题的解决方案,我在 Objective-C 类中使用了相同的方法名称和不同的参数

    - (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate
         Dragable:(BOOL)isDragable 
        updateCoordinate:(updateCoordinate)updateCoordinate;
    

    - (instancetype)initWithCoordinate:(CLLocationCoordinate2D)coordinate
     Dragable:(BOOL)isDragable;
    

    刚刚用NS_SWIFT_NAME改名字就可以了

    NS_SWIFT_NAME(init(withUpdateCoordinateAndCoordinate:isDragable:withUpdateCoordinate:));
    

    NS_SWIFT_NAME(init(withCoordinate:isDragable:));
    

    【讨论】:

      【解决方案3】:

      在某些情况下,您需要检查 classstructinit 函数的 DUPLICATE。此示例将显示错误Ambiguous use of 'init'

      init(name: String = "") { 
          self.id = -1
          self.name = name
      }
      
      init(id: Int = -1, name: String = "") {
          self.id = id
          self.name = name
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-09
        • 2018-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-10
        相关资源
        最近更新 更多