Xcode:在 UISlider 中没有更多上下文错误的表达式类型不明确

Posted

技术标签:

【中文标题】Xcode:在 UISlider 中没有更多上下文错误的表达式类型不明确【英文标题】:Xcode: Type of expression is ambiguous without more context ERROR in UISlider 【发布时间】:2021-01-02 11:56:21 【问题描述】:
extension ViewController: SliderDelegate 



func susimBackgroundValueChanged(slider: UISlider) 
    
        slider.isContinuous = false
    
        slider.setValue(
            value: round(slider.value * 8) / 8,
            animated: true,
            completion:  (getValue) in
                UIView.transition(
                    with: self.scrollView,
                    duration: 0.25,
                    options: .transitionCrossDissolve,
                    animations: 
                    self.scrollView.frame.origin.y = CGFloat(imageView.image?.size.height ?? 
                        0 * getValue)
                    ,
                    completion: nil
                )
            
        )
    
    

我使用扩展为“setValue”函数添加了一个闭包。 setValue 函数是 UISlider 的内置函数。

extension UISlider 

    func setValue(value: Float, animated: Bool, completion: @escaping (_ getValue: Float) -> 
        Void) 
        self.setValue(value, animated: animated)
        DispatchQueue.main.async 
            completion(value)
        
    

我不知道为什么会出现“没有更多上下文的表达式类型不明确”错误 请救救我

【问题讨论】:

你在哪一行得到错误,出于好奇,我不得不问你为什么这样做0 * getValue @JoakimDanielson,我猜0 * getValue 是错字,应该有0 : getValue() @AlekseyPotapov 这会造成编译器错误。 【参考方案1】:

错误信息和位置有误导性,问题出在这一行的类型混合:

self.scrollView.frame.origin.y = CGFloat(imageView.image?.size.height ?? 0 * getValue)

getValue 转换为CGFloat 以解决此问题:

self.scrollView.frame.origin.y = imageView.image?.size.height ?? 0 * CGFloat(getValue)

【讨论】:

以上是关于Xcode:在 UISlider 中没有更多上下文错误的表达式类型不明确的主要内容,如果未能解决你的问题,请参考以下文章

Xcode UITesting - 如何移动 UISlider?

Xcode Beta 6“没有更多上下文的表达式类型不明确”导航链接

Xcode Beta 6“没有更多上下文的表达式类型不明确”导航链接

在没有更多上下文的情况下,表达式的类型是模棱两可的。 <SocketEngine> 类

XCode 8 Beta 6 中引入的 UISlider 错误的解决方法?

表达式类型不明确,没有更多上下文”Alamofire 错误