美好的一天!我正在使用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
我怎样才能得到所述柱子的总和。谢谢!
答案 0 :(得分:2)
我想你的问题是因为:
您的Optionals未正确打开
类型Int没有“reduce”成员
您在循环中声明var sum
,因此在每次迭代时其值已替换
也许使用这样的东西:
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
}