2017-03-08 4 views
0

私はAlphofireを使用してSwiftの配列POSTにしようとしています。私のサーバー上でSwiftでアレイをPOSTするにはどうしたらいいですか? (私のサーバーにバイトを取得)

 var itemsToSend: [Dictionary<String, Any>] = [] 

     for i in 0..<selectedSongs.count { 
      let app = ["Info" : selected[i]["Info"]!] 
      itemsToSend.append(app) 
     } 

     let toSend = try! JSONSerialization.data(withJSONObject: itemsToSend, options: []) 
     print(toSend) //142 bytes 

     let data: [String: Any] = [ 
      "UID": FIRAuth.auth()?.currentUser?.uid as Any as! String, 
      "ID": "-", 
      "total" : selected.count, 
      "sendArray" : toSend 
     ] 

     let URLString = "http://www.example.com/mult/" 

     Alamofire.request(URLString, method: .post, parameters: data, encoding: URLEncoding.default).responseString(completionHandler: { response in 
      print(response.result.value) 
     }) 

、私はsendArrayを印刷するとき、私は得る:142 bytes

これは私のスウィフトコードです。私はSwiftでどのように配列できますか?

答えて

1

データを変換しないでください。単にキーを使用して配列をsendArrayに設定してください。

let data: [String: Any] = [ 
    "UID": FIRAuth.auth()?.currentUser?.uid!, 
    "ID": "-", 
    "total" : selected.count, 
    "sendArray" : itemsToSend 
] 
+0

私のサーバーで印刷すると、 'undefined'となってしまいました。 – user82395214

+0

@ user82395214次に、 'sendArray'キーがそのものかどうかを確認します。 –

+0

あなたはそれが何を意味するか分かりません。 'console.log(req.body.sendArray)'は 'undefined'を生成します。 – user82395214

0

あなたがAlamofireを使用している場合、あなたは、サーバー側の要求

let data:[String: Any] = ["foo":"bar", "items":["this", "is", "an", "array"]] 

// use JSONEncoding.default instead 
Alamofire.request(URLString, method: .post, parameters: data, encoding: JSONEncoding.default).responseString(completionHandler: { response in 
    print(response.result.value) 
}) 

を送信しているとき、あなたがデコードする必要がありますエンコードオプションのJSONEncoding.defaultを使用し、JSONSerializationを使用する必要はありませんURLデコーダーではなくJSONデコーダーを使用してポストボディを作成する

関連する問題