2016-02-26 2 views
8

Я использую FBSDK с Xcode 7.2.1 для извлечения информации о профиле пользователя и использования SwiftyJson для обработки и обработки данных json. После изменения значений/удаления некоторых я хочу сделать запрос на отправку на api с данными JSON. Но я быстро застрял в проблемах с очень плохим типом.Alamorafire + SwiftyJson + FacebookSDK

Это мой код, чтобы сделать пост запрос:

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 в качестве данных запроса post/put/patch с помощью Swift 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 Yep, потому что по умолчанию 'userProfile.dictionaryObject' вернет необязательный' Dictionary'. Вам придется развернуть его. –

+0

Спасибо за помощь @ J.Wang, к сожалению, когда я это делаю, он возвращает недействительный JSON. Перед dictionaryObject все отлично работает, но я не могу отправить JSON-тип с alamofire (это также нормально для меня, если есть другие библиотеки, где я могу его отправить), но с этим, dictionaryObject возвращает неправильный JSON, поэтому мой сервер возвращает ошибку мне. – artuc

Смежные вопросы