Swift - 获取循环int的总和

时间:2015-08-28 13:11:23

标签: ios swift for-loop core-data

美好的一天!我正在使用Core Data开发一个应用程序,我想得到数据库中“价格”列的总和。我有这个:

var myOrders : Array<AnyObject> = []

let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDelegate.managedObjectContext!
let freq = NSFetchRequest(entityName: "Shoes")
myOrders = context.executeFetchRequest(freq, error: nil)!

现在要循环数据,我正在这样做。

for var i = 0; i < myOrders.count;i++ {

            var data: NSManagedObject = myOrders[i] as! NSManagedObject
            var price = data.valueForKey("Price") as? Int
            var sum = price.reduce(0, combine: +)

        }

但我收到错误Could not find an overload for '+' that accepts the supplied arguments

我怎样才能得到所述柱子的总和。谢谢!

3 个答案:

答案 0 :(得分:2)

我想你的问题是因为:

  1. 您的Optionals未正确打开

  2. 类型Int没有“reduce”成员

  3. 您在循环中声明var sum ,因此在每次迭代时其值已替换

  4. 也许使用这样的东西:

    var sum = 0
    
    for order in myOrders {
        if let data = order as? NSManagedObject {
            if let price = data.valueForKey("Price") as? Int {
                sum += price
            }
        }
    }
    

答案 1 :(得分:0)

在您的代码中,您的价格为Int。尝试在单个值上运行reduce是没有任何意义的。你需要将价格作为一系列的Ints。

答案 2 :(得分:0)

我认为改变你的最后一行会有效,

使用for循环执行此操作,

    var sum:Int?
    for var i = 0; i < myOrders.count;i++ {

        var data: NSManagedObject = myOrders[i] as! NSManagedObject
        var price:Int? = data.valueForKey("Price") as? Int
        sum = price! + sum

    }