Swift Alamofire,致命错误:在展开可选值时意外发现nil

Swift Alamofire,致命错误:在展开可选值时意外发现nil,swift,null,alamofire,Swift,Null,Alamofire,我正在开发我的应用程序,它在模拟器上运行良好。当我在我的iphone上尝试时,它因取消抓取错误而崩溃。有什么想法吗?谢谢 } 试试这个: var url: String = "" func connectServer(url:String,completionHandler: (jsonResponse: JSON) -> ()) { Alamofire.request(.GET, url) .responseJSON { (respons

我正在开发我的应用程序,它在模拟器上运行良好。当我在我的iphone上尝试时,它因取消抓取错误而崩溃。有什么想法吗?谢谢

}

试试这个:

var url: String = ""
    func connectServer(url:String,completionHandler: (jsonResponse: JSON) -> ()) {
        Alamofire.request(.GET, url)
            .responseJSON { (response) -> Void in
                guard response.result.isSuccess else {
                    print("Error while fetching remote rooms: \(response.result.error)")
                    completion(nil)
                    return
                }

                guard let value = response.result.value as? [String: AnyObject],
                    completionHandler(jsonResponse: value) else {
                        print("Malformed data received from fetchAllRooms service")
                        completion(nil)
                        return
                }


        }
    }

原因是
response.result.value
nil
。很可能设备上没有可用的
localhost
。我猜Alamofire在发生错误时也会返回一个错误对象。先检查一下!您应该始终考虑可选的可能是零的可能性,因此,编写错误处理逻辑来正确地处理这种情况——@ VADEN,您是对的。谢谢你的帮助。我试图打印出错误消息,并说它无法连接到服务器。有什么解决方案可以让我的应用程序在iphone上正常工作吗?我的意思是仍然从localhost获取数据?你的iphone将无法连接到localhost。如果您在同一个网络上,您可能能够获取计算机的ip地址并以这种方式进行。完成(nil)意味着什么?我试过了,但是给了我一个未解析的标识符error,如果让value=response.result.value为,就替换它吧?[String:AnyObject]{completionHandler(jsonResponse:value)}和您的let json=json(response.result.value!)
 func loadData(){
    let cn = connection()
    let url = "http://localhost:3000/api/v1/patients/user_id/"+userID
    // Call function to connect server by API with specific url
    cn.connectServer(url) { (jsonResponse) in
        //Parsing JSON file
        for item in jsonResponse["patients"].arrayValue{
            //pasring json
            }
            }}
var url: String = ""
    func connectServer(url:String,completionHandler: (jsonResponse: JSON) -> ()) {
        Alamofire.request(.GET, url)
            .responseJSON { (response) -> Void in
                guard response.result.isSuccess else {
                    print("Error while fetching remote rooms: \(response.result.error)")
                    completion(nil)
                    return
                }

                guard let value = response.result.value as? [String: AnyObject],
                    completionHandler(jsonResponse: value) else {
                        print("Malformed data received from fetchAllRooms service")
                        completion(nil)
                        return
                }


        }
    }