我正在构建一个iOS应用程序,将网球中的获胜组合保存到Parse中的Class。它可以节省团队,日期,季节和胜利次数。 wins列是一个数字字段。对于1季,即2015年夏季,将有几行。第1队在第1天有2胜,第2队有1胜。在第2天,第1队有3胜,第2队有0胜。
我不确定将每个赛季和团队的胜利总和检索到我的应用程序的最佳策略。
我想检索"第1队= 5胜"并且"第2队= 1胜#34;对于当前数据。
在SQL中,我将构建一个视图并检索该结果。不知道如何在Swift / Parse中解决这个问题。任何建议表示赞赏。
我可以查询"评分"课程,它根据季节返回每个单独的分数。即2,2,2,3,1。但是,对于如何将它们存储在我的数组中并返回10的总和有一些困惑。代码如下:
import UIKit
import Parse
class viewSumPractice2: UIViewController {
var seasonSelect = ""
var winners = 0
@IBOutlet weak var seasonSelected: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
seasonSelect = "Summer 2015"
seasonSelected.text = seasonSelect
var query = PFQuery(className:"Scoring")
query.whereKey("season", equalTo:self.seasonSelect)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
for object in objects {
self.winners = object["wins"] as! NSInteger
//this returns correct values
println(self.winners)
//this needs work
var winsArray = [self.winners]
winsArray.append(self.winners)
let totalWins = winsArray.reduce(0, combine: +)
println(totalWins)
}
}
} else {
println("Error")
}
}
}
//修复了如下代码,以便从数组中获得正确的总和。
import UIKit
import Parse
class viewSumPractice2: UIViewController {
//var winner = [Int]()
var seasonSelect = ""
var winners = 0
@IBOutlet weak var seasonSelected: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
seasonSelect = "Summer 2015"
seasonSelected.text = seasonSelect
var winsArray = [self.winners]
var query = PFQuery(className:"Scoring")
query.whereKey("season", equalTo:self.seasonSelect)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let objects = objects as? [PFObject] {
// if let objects = objects {
for object in objects {
// var winners = 0
self.winners = object["wins"] as! NSInteger
winsArray.append(self.winners)
// println(self.winners)
}
}
} else {
println("Error")
}
let totalWins = winsArray.reduce(0, combine: +)
println(totalWins)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 0 :(得分:0)
Parse对于您在SQL中习惯的列没有SUM()
或COUNT()
函数。如果您预计您的数据集仍然很小,那么我就这样做:
Tennis
类wins
列存储在数组中let totalWins = winsArray.reduce(0, combine: +)
如果您希望拥有数千条记录,则上述解决方案将遇到查询限制。我建议手动跟踪胜利,如下所示:
Total
列和totalWins
列制作新的team
课程Total
类totalWins
列totalWins
并保存回Parse 对于曾经主要在SQL中自动执行的所有这些额外工作似乎很愚蠢,但它确实并不难,并且保持数据库性能高并使您的Parse请求确实很有意义快。
祝你好运!