如何获得包含dictonary的数组

时间:2018-04-20 10:09:43

标签: ios arrays swift dictionary

我想让这个数组包含要在api中传递的字典。

请在最后检查参数结果" \ n"

[{"user_id":"46","e_id":"566","date_list":"2018\/04\/20","t_depo":" 0.0","mini":"200","real_earn":"-5000.0","mb_balance":"-4000.0","balance_for":"4000"}]

任何想法?

我尝试以这种方式发送api但没有工作

var ary : [[String:String]] = []
        var mutableDictionary = [String: String]()
        var mutableArray:NSMutableArray!

            mutableDictionary.updateValue("\(appdel.dateSelected!)", forKey: "date_list")
            mutableDictionary.updateValue("\(user_id)", forKey: "user_id")
            mutableDictionary.updateValue("566", forKey: "e_id")
            mutableDictionary.updateValue("\(RupeesDepositeTotal.text!)", forKey: "t_depo")
            mutableDictionary.updateValue("300", forKey: "mini")
            mutableDictionary.updateValue("\(RealIncomeTF.text ?? "0")", forKey: "real_earn")
            mutableDictionary.updateValue("\(RealIncomeTF.text ?? "0")", forKey: "mb_balance")
            mutableDictionary.updateValue("\(newBalanceLabel.text ?? "0")", forKey: "balance_for")
            ary.append(mutableDictionary)


        mutableArray =  NSMutableArray(array: ary)


        print(mutableArray)

我传递的参数如下:

let parameters: Parameters = [
            "insert": "0",
            "Data": "\(mutableArray!)"
        ]

当我打印可变数组时,这是我的控制台

(
        {
        "balance_for" = "-231.0";
        "date_list" = "2018/04/20";
        "e_id" = 566;
        "mb_balance" = 33;
        mini = 300;
        "real_earn" = 33;
        "t_depo" = 264;
        "user_id" = 46;
    }
)

当我打印参数时:

["insert": "0", "Data": "(\n        {\n        \"balance_for\" = \"-10.0\";\n        \"date_list\" = \"2018/04/20\";\n        \"e_id\" = 566;\n        \"mb_balance\" = 6;\n        mini = 300;\n        \"real_earn\" = 6;\n        \"t_depo\" = 16;\n        \"user_id\" = 46;\n    }\n)"]

2 个答案:

答案 0 :(得分:0)

试试这个

var dict = [String: String]()  
dict["user_id"] = "46"  
dict["e_id"] ="566"  
dict["date_list"] = "2018/04/20"  
dict["t_depo"] = " 0.0"  
dict["mini"] = "200"  
dict["real_earn"] = "-5000.0"  
dict["mb_balance"] = "-4000.0"  
dict["balance_for"] = "4000"  
var dictArray = [dict];  
print(dictArray)

答案 1 :(得分:0)

你这样做:

let parameters: Parameters = [
            "insert": "0",
            "Data": "\(mutableArray!)"
        ]

你做错了什么:

"Data": "\(mutableArray!)"

这是使用mutableArray的描述。

相反:

"Data": mutableArray

你不应该做什么:
不要像NSStuff一样使用NSMutableArray,在可用时更喜欢使用Swift:Swift Array

现在,对于表示,你想要的是JSON。

let jsonData = try? JSONSerialization.data(withJSONObject: parameters, options: [])
let jsonStringified = String(data: jsonData!, encoding: .utf8)
print("jsonStringified: \(jsonStringified!)")

小心,我用过试试? (没有做catch),并且为了显示逻辑而强制解包jsonData!。你不应该在最后的工作中这样做。

jsonData,这是你可以放到myURLRequest.httpBody = jsonData的值,Stringified只是用于调试。如果您使用Alamofire或大多数其他第三方HTTP请求库,只需使用Parameters即可。