Стремительный Alamofire поместил ценность в строку - PullRequest
0 голосов
/ 06 мая 2018

Я не могу решить проблему при введении значения в запрос параметров в Alamofire

Мне нужно поместить данные как:

[["code": 40, "counts": 10], ["code": 43, "counts": 5], ..]

Я пытаюсь:

let jsonObject = [["code": 40, "counts": 10], ["code": 43, "counts": 5]]
let json = JSON(jsonObject)
let jsonString = json.rawString(.utf8)!

 let params = [.."others parameters":.., "order" : jsonString] as [String : Any]

Alamofire.request("http://...", method: .get, parameters: params).responseJSON { response in

И это прекрасно работает

Но этот массив мне нужно поместить из UserDefaults, и я пытаюсь сделать это так:

var ordString = ""

 override func viewDidLoad() {
        super.viewDidLoad()
 if let userArray = UserDefaults.standard.array(forKey: "products") as? [[String : String]] {
var text = "["
for user in userArray {

let quantNumber = user["quantityProd"] ?? ""
let codeNumber = user["codeProd"] ?? ""

 text.append("""
            ["code": \(codeNumber), "counts": \(quantNumber)],
             """)
}
text.removeLast(1)
text.append("]")
print(text) . // Give me [["code": 40, "counts": 10], ["code": 43, "counts": 5]]

ordString = text

А в Alamofire:

let jsonObject = ordString
let json = JSON(jsonObject)
let jsonString = json.rawString(.utf8)!

А когда сделаете запрос, выдайте мне ошибку JSON INPUT ERROR

1 Ответ

0 голосов
/ 06 мая 2018

Вы создаете строку вместо Array из key-value pair:

    var arrayOfData = Array<Any>()
    if let userArray = UserDefaults.standard.array(forKey: "products") as? [[String : String]] {

        for user in userArray {

            let dict = ["code": user["quantityProd"] ?? "","counts": user["codeProd"] ?? ""]
            arrayOfData.append(dict)
        }
    }

    let json = JSON(arrayOfData)
    let jsonString = json.rawString(.utf8)!

    let params = [.."others parameters":.., "order" : jsonString] as [String : Any]

Я также проинформировал вас о вашем последнем вопросе о том, что вы делаете неправильно, а также привел вам пример (демо) в моем ответе. Пожалуйста, посмотрите: Swift UserDefaults получает значения из массива

...