2016-08-01 4 views
1

(Alamofire) : 나는 새 사용자를 만들고 일부 값을 넣어 시도 후'String?'유형의 값을 변환 할 수 없습니다. 내가 객체 매퍼 내 수준의 사용자를 매핑

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 메소드에서 암시적인 unwrapped 옵션의 의미는 무엇입니까? 값은'nil'이 될 수 있고, ** real ** optional으로 선언 할 수도 있고,'nil'이 아닌 것으로 선언하면 non-optional로 선언 할 수도 있습니다. – vadian

답변

4

[문자열 : AnyObject] 형식의 Alamofire 요청 매개 변수는 사전을 매개 변수로 전달하기 만하면됩니다.

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에 전달하기 만하면됩니다.