2017-07-03 23 views
0

私は、ユーザーが入力/選択したAPIにデータを送信し、後で参照するIDを取得するイベントのデータを保存するのに役立つAPIをアプリケーションで使用します。 ここで私が使用しているいくつかのコードです。 Alamofireを使用して送信するAlamofireを使用してAPIにPOSTリクエストを送信する

{ 
    "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]" 
} 

データイム

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 \ APIで受け入れ

JSONが異なるから来た辞書selectedMembersと辞書selectedMembersから作成された配列でありますsegueの準備を使用してViewController

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が文字列形式のデータを要求していて、配列を送信しているときに問題が発生していると思うのですが、この問題を解決するためにも、jsonstringをjsonstringに変換しても問題は解決しました。イムは、このようなポストマンを通じてリクエストを送信する際に enter image description here

APIを受信エラーイムの

画像は動作します。 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

ああ、そのシンプルなものは、ViewControllersの間でselectedMembersを転送する最後のコードを見てください。 –

関連する問題