2017-07-03 215 views
0

因此,我使用一个应用程序的API来帮助我存储数据,以便将数据发送到用户输入/选择的API存储它,并取回ID以供稍后参考。 这是我使用的一些代码。使用Alamofire发送POST请求到API

JSON通过API接受

{ 
    "topic":"test shedule", 
    "setdate":"21-09-2017", 
    "scheduledate":"22-09-2017", 
    "settime":"09:00:00", 
    "scheduletime":"10:00:00", 
    "agenda":"hi this is test agenda", 

    "adminname":"name", 
    "type":"meeting", 
    "users": "[{\"category\":\"optional\",\"email\":\"[email protected]\"}]", 
    "adminemail":"[email protected]" 
} 

数据Im使用Alamofire发送\

let parameters: Parameters = [ 
      "topic":topicTextField.text!, 
      "setdate":currentDate as String, 
      "scheduledate":setDate as String, 
      "settime":currentTime as String, 
      "scheduletime":setTime as String, 
      "agenda":agendaTextField.text!, 
      "adminname":"abcname", 
      "type":"meeting", 
      "users" : "\(smembers)", 
      "adminemail":"[email protected]" 
     ] 

     Alamofire.request("\(baseURL)meeting_shedule.php",method: .post, parameters: parameters).responseJSON { response in 
      if let dict = response.result.value as? Dictionary<String, AnyObject> { 
       let topic = dict["topic"] as? String 
       let g_id = dict["g_id"] as? String 

       self.storeMeeting(topic: topic!, g_id: g_id!) 

      } 
     } 

smembers是从字典selectedMembers和字典selectedMembers创建的阵列来自不同的ViewController通过使用准备for segue

var selectedMembers = [String: String]() 
    var smembers = [Any]() 
    var selected = [String: String]() 

if selectedMembers.isEmpty == false { 
      for (key, value) in selectedMembers { 
       selected = ["email":key, "category":value] 
       smembers.append(selected) 
      } 
     } 

的问题

林背离API失败响应。 我认为问题是发送“用户”的API作为API要求的字符串形式的数据和Im发送数组我甚至试图通过序列化将smembers转换为jsonstring来解决这个问题,但仍然返回失败。当林发送通过邮局的人这样要求

接收 enter image description here

API错误Im的形象工程。 enter image description here

我不知道如何解决这个问题,如何发送API将接受的数据。在如以下所示的

var selectedMembers = [String: String]() 
    var smembers = [String]() 
    var selected = "" 

if selectedMembers.isEmpty == false { 
      for (key, value) in selectedMembers { 
       selected = String(format: "{\"\\email\\\":\"\\%@\"\\,\"\\category\"\\:\"\\%@\"\\}", arguments: [key,value]) 
       smembers.append(selected) 
      } 
     } 
在乌尔交数据

然后

感谢您的帮助

回答

1

变化逻辑

let parameters: Parameters = [ 
      "topic":topicTextField.text!, 
      "setdate":currentDate as String, 
      "scheduledate":setDate as String, 
      "settime":currentTime as String, 
      "scheduletime":setTime as String, 
      "agenda":agendaTextField.text!, 
      "adminname":"abcname", 
      "type":"meeting", 
      "users" :"[\(smembers.joined(separator: ","))]", 
      "adminemail":"[email protected]" 
     ] 
+0

从不同VC来被一个字典存储像selectedMembers数据的数据= [电子邮件:类别]。这些数据如何进入您创建的课程中,我不明白这一点? –

+0

显示我的代码如何传递信息到该API调用 –

+0

哦,它只是一个简单的准备segue,在ViewControllers之间传递selectedMembers看看我在帖子中输入的最后一个代码 –