2016-08-01 5 views
1

私はオブジェクトマッパーと私のクラスのユーザーマップ:'String?'型の値を変換できません。 (Alamofire)

class User: Mappable{ 

private var _username: String! = nil 
private var _password: String! = nil 
private var _firstName: String! = nil 
private var _lastName: String! = nil 

//here are getters and setters(it takes too much space) 

init(){ 

} 

required init?(_ map: Map) { 

} 

func mapping(map: Map) { 

    username <- map["USERNAME"] 
    password <- map["PASSWORD"] 
    firstName <- map["FIRST_NAME"] 
    lastName <- map["LAST_NAME"] 

    } 
} 

をし、私は、新しいユーザーを作成し、いくつかの値を入れて、オブジェクト全体をマップし、このようAlamofireを送信しようとした:

let userEmail = userEmailField.text! 
let userPassword = userPasswordField.text! 

let user = User() 
user.username = userEmail 
user.password = userPassword 
let JSONString = Mapper().toJSONString(user, prettyPrint: true) 

AlamofireService.alamofireService.makePostServiceRequest(URL_BASE, parameters: JSONString, resposeCallback: self) 

私はライブラリの指示に従っていますが、「タイプ 'Stringの値を変換できませんか?」というエラーが表示されます。期待される引数型 '[String:AnyObject]' "、なぜですか?

+0

表示されるエラーとは何であるあなたのケースであなただけの好き必要がありますか? –

+0

@MatanLachmish申し訳ありません、私は忘れてしまいます。私は私の質問を編集する。 –

+0

ゲッターとセッターでプライベートインスタンス変数を使用する感覚は何ですか?これは迅速です!そして、initメソッドで暗黙的にアンラップされたオプションの感覚は何ですか?どちらの値も 'nil'でもかまいませんし、** real ** optionalとして宣言しても、' nil'でないと宣言しても非オプションであると宣言してもかまいません。 – vadian

答えて

4

[文字列:AnyObject]形式のアラモファイヤー要求要求パラメータで、辞書をパラメータとして渡すだけです。

let userEmail = userEmailField.text! 
let userPassword = userPasswordField.text! 

var dictParameter: Dictionary<String, AnyObject> = [:] 
dictParameter["USERNAME"] = userEmail 
dictParameter["PASSWORD"] = userPassword 

そして、それだけで作るリクエストの後:

AlamofireService.alamofireService.makePostServiceRequest(URL_BASE, parameters: dictParameter, resposeCallback: self) 
+0

そして、レスポンスを処理する最善の方法はAlamofire Object Mapperです。 –

+0

はい、私はObject Mapperを使って作業することをお勧めします。 –

+0

そして、もし私がオブジェクトを送る必要があれば?送信しなければならない情報が多すぎるため、辞書として入力するのは複雑すぎるでしょうか? –

0

パラメータを文字列に変換する必要はありません。パラメータを辞書としてAlamofireに渡すだけです。

関連する問題