【发布时间】:2016-05-02 13:04:47
【问题描述】:
我正在开发我的应用程序,它在模拟器上运行良好。当我们在我的 iphone 上尝试时,它崩溃了,出现了 unwarping 错误。有什么想法吗?谢谢 error screenshot
class connection{
var url: String = ""
func connectServer(url:String,completionHandler: (jsonResponse: JSON) -> ()) {
Alamofire.request(.GET, url)
.responseJSON { (response) in
let json = JSON(response.result.value!)
// print(json) // works fine
completionHandler(jsonResponse: json)
}
}
}
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
}
}}
【问题讨论】:
-
原因是
response.result.value!是nil。很可能localhost在设备上不可用。我猜 Alamofire 在发生错误时也会返回一个错误对象。始终先检查! -
您应该始终考虑可选项可能为 nil 的可能性,因此编写错误处理逻辑来正确处理这种情况 - see this Q&A for ways of safely dealing with optionals.
-
@vadian 你是对的。谢谢你的帮助。我试图打印出错误消息并说它无法连接到服务器。有什么解决方案可以让我的应用程序在 iphone 上运行良好,我的意思是仍然从 localhost 获取数据?
-
您的 iphone 将无法连接到 localhost。如果您在同一个网络上,您也许可以获取您计算机的 IP 地址并这样做。