преобразовать nsmanganedobject в массив, чтобы найти сумму массива - PullRequest
0 голосов
/ 18 февраля 2019

Мой код ниже пытается получить данные ядра из NSManagedObject и добавить их в массив.Основной элемент данных сохраняется в виде строки.Мой код не является убедительным.В идеале код должен иметь возможность добавлять код в массив, после чего массив заполняется, найти сумму суммированных чисел и вывести их в функцию viewDidLoad().

var itemName : [NSManagedObject] = []

       func performAction() {
        let appD = UIApplication.shared.delegate as! AppDelegate

        let context = appD.persistentContainer.viewContext

        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Data")
        request.returnsObjectsAsFaults = false
        do {
            let result = try context.fetch(request)
            var retrievedData = [Double]()
            for data in result as! [NSManagedObject] {
                if let value = data.value(forKey: "ee") as? Double {
                    retrievedData.append(value)
                }
            }

            let arraySum = retrievedData.reduce(0, +)
            print(arraySum)

        } catch {

            print("Failed")
        }
    }

enter image description here

1 Ответ

0 голосов
/ 18 февраля 2019

Я пересмотрел ваш код, когда вам нужно будет изменить мелочь там.Замените функцию executeAction согласно моему обновленному ответу.

 func performAction() {
        let appD = UIApplication.shared.delegate as! AppDelegate

        let context = appD.persistentContainer.viewContext

        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Data")
        request.returnsObjectsAsFaults = false
        do {
            let result = try context.fetch(request)
            var retrievedData = [Double]()
            for data in result as! [NSManagedObject] {
                if let value = data.value(forKey: "ee") as? String {
                    retrievedData.append(Double(value) ?? 0)
                }
            }

            let arraySum = retrievedData.reduce(0, +)
            print(arraySum)

        } catch {

            print("Failed")
        }
    }
...