2016-02-26 15 views
8

Tôi sử dụng FBSDK với Xcode 7.2.1 để truy xuất thông tin hồ sơ người dùng và sử dụng SwiftyJson để xử lý và thao tác dữ liệu json. Sau khi thay đổi các giá trị/loại bỏ một số tôi muốn thực hiện một yêu cầu gửi đến api của tôi với dữ liệu JSON. Nhưng tôi đang mắc kẹt với các vấn đề loại thực sự xấu trong nhanh chóng.Alamorafire + SwiftyJson + FacebookSDK

Đây là mã của tôi để thực hiện một yêu cầu bài:

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 
} 

Đáng tiếc là tôi nhận được lỗi này:

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

Nếu tôi cố gắng để gửi dữ liệu JSON trực tiếp đến API tôi nhận được lỗi này:

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

Mọi trợ giúp đều được đánh giá cao. Tôi chỉ muốn biết, làm cách nào để chuyển đổi đối tượng JSON thành String AnyObject? mà không thất bại. Hoặc gửi đối tượng Json dưới dạng dữ liệu yêu cầu đăng/đặt/vá bằng Swift 2.

+0

Hãy thử thay đổi mã hóa từ .URL để .json –

+0

Đó không phải là vấn đề. Không hoạt động .. – artuc

+0

Không vấn đề gì bạn có thể chia sẻ dữ liệu của userProfile? –

Trả lời

1

JSON là loại tùy chỉnh được xác định trong SwiftyJson. Hãy thử sử dụng userProfile.dictionaryObject trong trường hợp của bạn để chuyển nhanh chóng theo số Dictionary.


Unwrap điển tùy chọn của thành viên này

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

Cảm ơn câu trả lời nhưng khi tôi làm điều đó tôi không thể có được một json hợp lệ để nó ném lỗi từ api. Đây là đầu ra trước/sau: http://pastebin.com/i1JqgFec – artuc

+0

@artuc Yep, vì theo mặc định, 'userProfile.dictionaryObject' sẽ trả về một' Từ điển' tùy chọn. Bạn sẽ phải tháo nó ra. –

+0

Cảm ơn sự giúp đỡ @ J.Wang không may, khi tôi làm điều đó, nó trả về một JSON không hợp lệ. Trước khi dictionaryObject, tất cả mọi thứ loooks tuyệt vời nhưng tôi không thể gửi loại JSON với alamofire (nó cũng ok cho tôi biết nếu có bất kỳ thư viện khác, nơi tôi có thể gửi nó), nhưng với một này, dictionaryObject trả về JSON sai như vậy, máy chủ của tôi trả về một lỗi với tôi. – artuc

Các vấn đề liên quan