2016-05-02 9 views
-1

私のアプリケーションで作業していました。私は私のiPhoneでそれを試している間、それは壊れてerror.Anyアイデアとクラッシュ? THX error screenshotAlamofire、致命的なエラー:予期せず、アンラッピング中にオプションの値が見つかりませんでした。

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 
      } 
      }} 
+1

理由は 'response.result.valueが' 'nil'であるということです。おそらく 'localhost'はデバイス上で利用できません。私はAlamofireもエラーの場合にエラーオブジェクトを返すと思います。常に最初にチェックしてください! – vadian

+1

オプションは常にnilになる可能性があるので、そのケースを正しく処理するためのエラー処理ロジックを記述してください - [オプションを安全に処理する方法についてはこのQ&Aを参照してください。](http://stackoverflow.com/questions/ 32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrap-an-optional-valu) – Hamish

+0

@vadianあなたは正しいです。ご協力いただきありがとうございます。エラーメッセージを出力しようとしましたが、サーバに接続できないと言いました。私のアプリがiphoneでうまく動くようにするソリューションはありますか?ローカルホストからデータを引き出すことを意味しますか? –

答えて

0

、このいずれかを試してみてください!

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 
       } 


     } 
    } 
+0

完了(nil)とはどういう意味ですか?私はそれを試みたが、私に未解決の識別子エラーを与える –

+0

ただ値を置き換える場合= response.result.valueとして?あなたのlet json = JSON(response.result.value!)を使って[String:AnyObject] {completionHandler(jsonResponse:value)} –

関連する問題