无法将类型为'Void'的值分配为类型为'String?'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将类型为'Void'的值分配为类型为'String?'相关的知识,希望对你有一定的参考价值。

我出现错误“无法将'Void'类型的值分配给'String吗?'”我的代码

       func showPhone(place: Place){
           if let phone = place.phone {
            var urlPhone: NSURL = URL(string: "TEL://(phone)")! as NSURL
            phoneValue.text = UIApplication.shared.open(urlPhone as URL, options: [:], completionHandler: nil)
           }
           else {
                self.phoneContainer.isHidden = true
           }
       }

答案

原因:

您正在尝试将open(_:options:completionHandler:)的结果分配为phoneValue's text。但是,方法open(_:options: completionHandler:)不返回任何内容。这就是它给出错误的原因。

解决方案:

showPhone(place:)方法应该像,

func showPhone(place: Place){
    if let phone = place.phone {
        phoneValue.text = phone
        if let urlPhone = URL(string: "TEL://(phone)") {
            UIApplication.shared.open(urlPhone, options: [:], completionHandler: nil)
        }
    }
    else {
        self.phoneContainer.isHidden = true
    }
}

以上是关于无法将类型为'Void'的值分配为类型为'String?'的主要内容,如果未能解决你的问题,请参考以下文章

无法将'__NSDictionaryM'(0x1111152b0)类型的值转换为'FIRDataSnapshot'Firebase Swift 3

错误:对类型为'const ItemInstance'的引用无法绑定到类型为'void'的右值

无法将'__ NSCFString'类型的值转换为'NSData'

无法将'CGFloat'类型的值转换为闭包结果类型'CGPoint'

无法将'ViewController.Type'类型的值转换为预期的参数类型'UIViewController'

Swift 4:无法将类型“(Void)-> Void”的值分配给类型“(()-> Void)?”