代码之家  ›  专栏  ›  技术社区  ›  Bhargav Soni

swift无法将类型为(_,_)->的值转换为预期的参数类型'((_,cgloat))->_

  •  1
  • Bhargav Soni  · 技术社区  · 7 年前

    我正在使用图书馆 URLEmbeddedView

    它在其库中定义了以下代码:

    func addConstraints(with view: UIView, center: CGPoint, multiplier: CGFloat = 1) {
        view.translatesAutoresizingMaskIntoConstraints = false
        addConstraints([
                (.centerX, center.x),
                (.centerY, center.y)
            ]
            .flatMap {
                .init(item: view,
                      attribute: $0,
                      relatedBy: .equal,
                      toItem: self,
                      attribute: $0,
                      multiplier: multiplier,
                      constant: $1)
            })
    }
    

    我们正在通过库生成链接预览,但出现以下错误:

    无法转换类型(_,_)->的值到预期的参数类型 “(_,cgloat))->_“在flapMap行。

    我熟悉 Objective-C 但不是与 Swift . 代码中会出现什么问题?

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  1
  •   Bhargav Soni    7 年前

    还需要使用8.1以上的Xcode版本。

    我使用了与你相同的代码。仅将约束应用于 view

       view.addConstraints([
            (.centerX, center.x),
            (.centerY, center.y)
            ].flatMap {
                .init(item: view, attribute: $0, relatedBy: .equal, toItem: self, attribute: $0, multiplier: multiplier, constant: $1)
        })
    

    没有任何问题 flatMap 语法。我已在上执行代码 Xcode-9 以及 Xcode-8 它没有给我任何错误。

    只是使用了我上面写的相同代码,看看它是否编译正确。

        2
  •  1
  •   Mars    7 年前

    错误的 addConstraints() 正在呼叫。

    你在打电话 viewController.addConstraints() 当你想打电话时 view.addConstraints()

    addConstraints() 看法addConstraints()