2017-07-13 78 views
0

如何使用swift將數組傳遞給我的Php後端。我是否需要循環每個值並將其附加到請求主體?如何在快速json請求中傳遞數組

這裏是我的代碼

 let url = URL(string: "url.com/page")! 
     var request = URLRequest(url: url) 
     request.httpMethod = "POST" 


     let id = user?["id"] as! String 
     let party = partyName.text! 

     let body = "id=\(id)&party_name=\(party)&party_invited=\(usersInvited)" 

     //********--usersInvited-- is the array i want to pass 



     request.httpBody = body.data(using: String.Encoding.utf8) 

     URLSession.shared.dataTask(with: request, completionHandler: { (data:Data?, response:URLResponse?, error:Error?) in 

      DispatchQueue.main.async(execute: { 

       if error == nil{ 

        do{ 
         let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary 


         guard let parseJSON = json else{ 
          print("Error while parsing") 
          return 
         } 


         print(parseJSON["status"]) 

        } catch{ 

         print("Caught an error: \(error)") 
        } 


       } else{ 
        print("Error: \(error)") 
       } 

      }) 
     }).resume() 

但這些代碼將數組作爲一個整體字符串,像這樣的輸出:[「57」,「60」]

回答

1

我猜,但它看起來像你想JSON編碼你的數組,但作爲一個URL參數?

(我認爲usersInvited是一個字符串數組)

你可以通過JSONSerialisation去?

let data = try! JSONSerialization.data(withJSONObject: usersInvited, options: []) 
let string = String(data: d, encoding: .utf8)! 

let body = "id=\(id)&party_name=\(party)&party_invited=\(string)" 

或者,如果這不是相當你想要什麼(你有你的問題逗號後有一個空格),你可以只用手工做呢?

let string = "[" + usersInvited.map { "\"\($0)\"" }.joined(separator: ", ") + "]" 

我的投票將使用選項1,並讓您的服務器接受它輸出的內容。


如果你的意思是你希望它看起來像party_invited=1,2,3,4那麼你可以使用加入到數組轉換這樣

let string = usersInvited.joined(separator: ",") 

let body = "id=\(id)&party_name=\(party)&party_invited=\(string)" 

如果你的意思是你想要這個party_invited=1&party_invited=2&party_invited=3那麼你可以使用地圖並加入

let string = usersInvited.map { "party_invited=\($0)" }.joined(separator: "&") 

let body = "id=\(id)&party_name=\(party)&\(string)" 
+0

我結束了使用你的第三個想法,我發送了party_invited,用逗號分隔,例如pa rty_invited = 1,2,3,4,然後將它們拆分並放入Php中的數組中。偉大的作品 –