Swift 3 - URLRequest创建崩溃

时间:2016-06-18 17:14:42

标签: ios nsurlrequest urlrequest swift3 xcode8

        let url = URL(string: "\(SERVER_HOST)/post?fb_id=\(fb_user)")
        var request = URLRequest(url: url!) // Crashes here

        Alamofire.request(request)
            .responseJSON { response in
                switch response.result {
                case .failure(let error):
                    onComplete(success: false)
                case .success(let responseObject):
                    onComplete(success: true)
                }
        }

崩溃错误:

  

致命错误:在解包可选值时意外发现nil

它在Swift 3之前起作用了。
它是NSURLRequest并且它起作用了。我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:2)

guard let会返回一个可选项,当你的nil值为0时,你会强行在下一行展开,你应该使用if letguard let url = URL(string: "\(SERVER_HOST)/post?fb_id=\(fb_user)") else { return } var request = URLRequest(url: url) Alamofire.request(request) .responseJSON { response in switch response.result { case .failure(let error): onComplete(success: false) case .success(let responseObject): onComplete(success: true) } } 这样

if let url = URL(string: "\(SERVER_HOST)/post?fb_id=\(fb_user)") {
   var request = URLRequest(url: url!)
   // and rest of the code
   Alamofire.request(request)
            .responseJSON { response in
                switch response.result {
                case .failure(let error):
                    onComplete(success: false)
                case .success(let responseObject):
                    onComplete(success: true)
                }
        }
}

或者你可以使用if

BACnet

如果你没有做任何其他事情,那么请在开始时使用guard let返回。

您可以阅读有关swift基础知识和可选here的内容。

答案 1 :(得分:2)

嗯,解决方案是添加!在字符串格式化中的每个变量之后,为了使其成为非可选项。

let stringUrl = "\(SERVER_HOST)...\(FBUser.id!)..."