从Parse数据库中循环JSON会产生错误的结果

时间:2015-11-03 17:45:10

标签: ios json swift uitableview dictionary

  

Swift 2.0,xcode 7.1

我正在尝试从Parse数据库中检索一些数据,过滤它以删除重复数据并存储在字典中。每行解析都有客户下订单(JSON如下所示),我想在UITableView中检索它以显示下订单。如果客户最近已经下了多个订单,我想过滤它并在他的客户ID下的一个表视图部分显示他的所有订单。

过滤正在运行,但出于某种原因,我的循环并没有给我准确的结果。

解析第1行:

  

[{ “客户”: “9sKSDTG7GY”, “产品”: “汉堡”, “数量”: “2”}]

解析第2行:

  

[{ “客户”: “nyRHskbTwG”, “产品”: “炙热”, “数量”: “2”},{ “客户”: “nyRHskbTwG”, “产品”: “布瑞雅尼”, “数量” : “2”}]

检索此数据并存储在self.custome,self.fQuantity和self.fName变量中。

我使用的循环如下:

let cD = self.customer
                print("Customer data before filtering Unique value: \(self.customer)")
                self.uniqueValues = self.uniq(cD) //Calling a function to get unique values in customer data

  print("Customer data after filtering Unique value: \(self.uniqueValues)")
            var newArray = [[String]]()

            for var count = 0; count < self.customer.count; count++ {
                for sID in self.uniqueValues {
                    if sID.containsString(self.customer[count]){

                        let dicValue = [String(self.fQuantity[count]), String(self.fName[count])]
                        newArray.append(dicValue)

                        self.dicArray.updateValue(newArray, forKey: sID)
                    } else {
                        // Do nothing...
                    }
                }
            }

            print("Dictionary Values: \(Array(self.dicArray.values))")
            print("Dictionary Keys: \(Array(self.dicArray.keys))")

印刷输出如下:

  

过滤前的客户数据唯一值:[“9sKSDTG7GY”,   “nyRHskbTwG”,“nyRHskbTwG”]

     

过滤后的客户数据唯一值:[“9sKSDTG7GY”,   “nyRHskbTwG”]

     

字典值:[[[“2”,“Burger”],[“2”,“Sizzler”],   [“2”,“Biryani”],[[“2”,“Burger”]]]

     

字典键:[“nyRHskbTwG”,“9sKSDTG7GY”]

有人能弄清楚我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

您过滤了数据,但正在循环访问未经过滤的客户列表。

    for var count = 0; count < self.customer.count; count++ {

答案 1 :(得分:1)

正如@David建议的那样,你必须交换外环和内环。但是如果在if循环中找不到任何内容,我还必须删除newArray中包含的所有值。所以这就是我的工作方式。

let cD = self.customer
                print("Customer data before filtering Unique value: \(self.customer)")
                self.uniqueValues = self.uniq(cD) //Calling a function to get unique values in customer data

  print("Customer data after filtering Unique value: \(self.uniqueValues)")
        var newArray = [[String]]()

        for sID in self.uniqueValues {
 for var count = 0; count < self.customer.count; count++ {
                if sID.containsString(self.customer[count]){

                    let dicValue = [String(self.fQuantity[count]), String(self.fName[count])]
                    newArray.append(dicValue)

                    self.dicArray.updateValue(newArray, forKey: sID)
                } else {
                   newArray.removeAll() // ****** Adding this works for me

                }
            }
        }

        print("Dictionary Values: \(Array(self.dicArray.values))")
        print("Dictionary Keys: \(Array(self.dicArray.keys))")