Swift Sum, кратное Int в данных Json - PullRequest
1 голос
/ 21 июня 2019

Итак, у меня есть несколько данных json, которые я хочу суммировать, поэтому я пробую цикл, и он все еще не работает, я пытаюсь уменьшить и все еще не работать, я помещаю переменную данных json в массив, но все еще не могуполучить результат

Итак, это данные Json:

    [

        {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "193",
        "assignee": "Ivander",
        "counts": 8
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "195",
        "assignee": "Adrian ",
        "counts": 3
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "204",
        "assignee": "khalid",
        "counts": 11
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "164",
        "assignee": "Testing",
        "counts": 0
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "171",
        "assignee": "Ahma",
        "counts": 0
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "13",
        "assignee": "Hafi",
        "counts": 0
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "17",
        "assignee": "Bob ",
        "counts": 0
    },
    {
        "projects_id": 13,
        "projects": "Immobi Track",
        "assignee_id": "10",
        "assignee": "Hest",
        "counts": 0
    }
]

Я пытаюсь суммировать данные "подсчетов" по каждому из данных уполномоченного, но я не могу понять, почему, когдая пытаюсь напечатать, что это выглядит как отдельные данные не внутри массива, но я просто помещаю все эти данные в массив ..... вот мой код

          struct pivotProjectSum : Codable {

            let projects_id: Int
            let projects : String
            let assignee_id : String
            let assignee : String
            let counts : Int
            }


             private var pivot : [pivotProjectSum] = []


                 URLSession.shared.dataTask(with: JsonUrl) { (data, response, error) in
            guard let data = data else {return}

            do{
                let parsing = try JSONDecoder().decode([pivotProjectSum].self, from: data)
                self.pivot = parsing

                DispatchQueue.main.async {
                    if parsing.isEmpty{
                        let action = UIAlertAction(title: "Ok", style: .default, handler: nil)
                        let alert = UIAlertController(title: "Data Empty", message: "No Data...", preferredStyle: .alert)
                        alert.addAction(action)
                        self.present(alert, animated: true, completion:  nil)
                    }else{
                        self.pivotTableView.reloadData()
                    }
                }
            }catch{
                print("This is the error??‍♂️\(error)")
            }
        }.resume()
    }
}

            extension PicSummaryViewController : UITableViewDelegate,   UITableViewDataSource {
             func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
              return pivot.count
    }

               func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
              let piv = pivot[indexPath.row]
            //let pivots = pivot[indexPath.self]
             guard let cell =  pivotTableView.dequeueReusableCell(withIdentifier: "Pivot") as?  PicSummaryTableViewCell else {return UITableViewCell()}

        cell.UserLbl.text = piv.assignee
        cell.openLbl.text = "\(piv.counts)"
        projectLbl.text = piv.projects


        print(piv.counts)



                 let numbers = [piv.counts]
        var sum = 0
        var counter = 0

        print("This is the numbers??‍♂️\(numbers)")

        while counter < numbers.count{

            var newValue = numbers[counter]
            sum += newValue
            counter += 1
        }

        print("this is the result ?\(counter)")

        let total = numbers.reduce(0, +)
        print("this is the result ?\(total)")

        for i in 0...numbers.count{
            sum += i
        }

        print("this is the result ?\(sum)")

        return cell

    }

   //i try every single method, but i still cant get the result. 

   // and no im not combine all of that sum method, i use it 1 method at a time

, и результат выглядит таккаждый метод:

This is the numbers??‍♂️[0]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1
8
This is the numbers??‍♂️[8]
this is the result ?1
3
This is the numbers??‍♂️[3]
this is the result ?1
11
This is the numbers??‍♂️[11]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1
0
This is the numbers??‍♂️[0]
this is the result ?1

так что-нибудь помочь, сэр?я еще новичок и учусь у этого разработчика Swift

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Попробуйте это;

let sum = pivot.map({ $0.counts }).reduce(0, +)
0 голосов
/ 21 июня 2019

Можно попробовать

 self.pivot = try JSONDecoder().decode([PivotProjectSum].self, from: data)
 let sum = self.pivot.map{ $0.counts }.reduce(0,+)
 print(sum)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...