2016-10-03 34 views
0

我试图用Alamofire来发布Dictionairy到我的后端:尝试后一本字典,以我的后端

这是我的代码:

func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) { 
    let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers) 

    let phoneNumbersDictionary = phonenumbers.map({ ["number": $0] }) 

    let json = JSON(phoneNumbersDictionary) 
    print(json) 

    Alamofire.request(.POST, urlString, parameters: phoneNumbersDictionary, encoding: .JSON).validate().responseJSON(completionHandler: {response in 
     if response.result.isSuccess{ 
      if let json = response.result.value { 
       let json = JSON(json) 

      } 
     } 
     if response.result.isFailure{ 

     } 
    }) 
} 

它不会编译,因为phoneNumbersDictionairy是不符合预期的说法:

enter image description here

打印(JSON),但是在打印正是我在我的邮差虽然。这是我想发布的内容。 印刷声明:

[ 
    { 
    "number" : "85555512" 
    }, 
    { 
    "number" : "85551212" 
    }, 
    { 
    "number" : "55648583" 
    } 
] 

我的邮差:

enter image description here

我怎样才能做到这一点?

+0

'phonenumbers'的阵列怎么样子? – PiterPan

+0

你的错误意味着这个Alamofire方法会向网络发送一个字典,但是你正试图发送一个显然无法发送的字典数组。 –

+0

基本上,你的'phoneNumbersDictionary'不是一个字典。它是一个数组。 –

回答

0

我结束了使用此:

func postCheckUserPhonenumbers(phonenumbers:[String], completionHandler: (([AnyObject?], AnyObject?) -> Void)) { 
    let urlString = Constant.apiUrl().stringByAppendingFormat(Constant.apiPostCheckUserPhonenumbers) 

    let phoneNumbersDictionary = phonenumbers.map({ ["number": $0] }) 

    let inputJSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: []) 

    let request = NSMutableURLRequest(URL: NSURL(string: urlString)!) 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.HTTPMethod = "POST" 
    request.HTTPBody = inputJSON 

    Alamofire.request(request).validate().responseJSON(completionHandler: {response in 
     if response.result.isSuccess{ 
      if let value = response.result.value { 
       let json = JSON(value) 
       let jsonString = json.rawString() 
       if let users:Array<User> = Mapper<User>().mapArray(jsonString) { 
        completionHandler(users, nil) 
       } else { 
        completionHandler([nil], nil) 
       } 
      } 
     } 
     if response.result.isFailure{ 
      let message = ApiMessage() 
      message.message = "No users found" 
      completionHandler([nil],message) 
     } 
    }) 
}