2016-02-26 52 views
8

我使用FBSDK和Xcode 7.2.1來檢索用戶配置文件信息並使用SwiftyJson處理和操作json數據。在更改值/刪除一些我想要使用JSON數據發送到我的API的發佈請求。但是我很快就遇到了非常糟糕的類型問題。Alamorafire + SwiftyJson + FacebookSDK

這是我的代碼,以使POST請求:

let headers = [ 
     "Content-Type": "application/json" 
] 
let userProfile = userProfile as? [String : AnyObject] 
Alamofire.request(.POST, "http://localhost:8888/api/profile", parameters: userProfile, headers: headers, encoding:ParameterEncoding.URL) .response { request, response, data, error in 
     print(userProfile) //This prints nil 
     print(response) //This prints api error for expecting data 
} 

不幸的是我收到此錯誤:

Cast from 'JSON' to unrelated type '[String : AnyObject]' always fails

如果我嘗試將JSON數據直接發送到API我收到此錯誤:

Cannot convert value of type 'JSON' to expected argument type '[String : AnyObject]?'

任何幫助表示讚賞。我只想知道,如何將JSON對象轉換爲String AnyObject?沒有失敗。或發送JSON對象作爲後/ PUT /補丁請求數據與夫特2.

+0

嘗試從.URL改變編碼以.json –

+0

這不是問題。沒有工作.. – artuc

+0

沒問題,你可以分享userProfile的數據? –

回答

1
JSON

SwiftyJson定義的自定義類型。嘗試在您的案例中使用userProfile.dictionaryObject以獲取潛在的快速Dictionary


展開可選的字典本

if let userProfile = userProfile.dictionaryObject { 
    Alamofire.request(.POST, "http://localhost:8888/api/profile", parameters: userProfile, headers: headers, encoding:ParameterEncoding.URL) .response { request, response, data, error in 
      print(userProfile) //This prints nil 
      print(response) //This prints api error for expecting data 
    } 
} 
+0

感謝您的答案,但是當我這樣做時,我無法獲得有效的json,所以它會從api中引發錯誤。這是之前/之後的輸出:http://pastebin.com/i1JqgFec – artuc

+0

@artuc是的,因爲默認情況下,'userProfile.dictionaryObject'將返回一個可選的'Dictionary'。你必須打開它。 –

+0

感謝@ J.Wang的幫助,不幸的是,當我這樣做時,它會返回無效的JSON。在dictionaryObject之前,一切都很好,但是我不能發送JSON類型與alamofire(對於我來說也是可以的,如果有其他庫我可以發送它),但是對於這個,dictionaryObject返回錯誤的JSON,所以我的服務器返回一個錯誤對我來說。 – artuc