模棱两可的表达式类型错误(Swift 2)

Posted

技术标签:

【中文标题】模棱两可的表达式类型错误(Swift 2)【英文标题】:Ambiguous expression type error ( Swift 2 ) 【发布时间】:2015-11-11 18:25:35 【问题描述】:

我有一个警报弹出窗口,我向其中添加了一个操作,该操作具有可能引发异常的回调。

问题是,在下面的代码中,style: .Default 附近有一个模棱两可的表达式类型错误。这显然是由于错误而发生的:如果我删除整个 catch 块并将 try 替换为 try! - 错误就消失了。

我很困惑,需要你的帮助!

let submitButton = UIAlertAction(title: "Submit", style: .Default)  [unowned self, ac] _ in
        let answerField = ac.textFields![0]


        do 
            try self.submitAnswer(answerField.text!)
         catch let error as UserInputError 

        

    

【问题讨论】:

如果使用UIAlertActionStyle.Default而不是.Default,是否还有错误? 是的。我试过了,但错误仍然存​​在。 我的错,似乎很明显。话说submitAnswer的签名是什么? 【参考方案1】:

错误信息具有误导性。真正的问题是你的catch 声明不是“详尽的”。编译器不知道 UserInputError 是唯一可能抛出的错误。

这应该可以解决它:

do 
    try self.submitAnswer(answerField.text!)
 catch let error as UserInputError 
    // a UserInputError
 catch let error 
    // some other error

【讨论】:

谢谢!这有帮助!我完全忘记了!

以上是关于模棱两可的表达式类型错误(Swift 2)的主要内容,如果未能解决你的问题,请参考以下文章

Swift 本地通知:没有更多上下文的表达式类型是模棱两可的

Swift for 循环“表达式类型 '[[String : String]]' 在没有更多上下文的情况下模棱两可

在没有更多上下文的情况下使表达式类型模棱两可

在没有更多上下文的情况下使表达式类型模棱两可

Swift3 迁移问题

为啥这个元组在 swift 3 中没有更多上下文就模棱两可?