将nsmanganedobject转换为数组以找到数组的总和

时间:2019-02-17 23:33:25

标签: arrays core-data swift4 nsmanagedobject

我下面的代码试图将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 :(得分:1)

当您需要在那儿更改一些小东西时,我检查了您的代码。根据我更新的答案替换performAction函数。

 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")
        }
    }