我正在 Swift 中构建一个评分应用程序,在其中存储图像的平均票数、总票数和 Parse 中的当前票数。我想在没有objectId的情况下更新行。
考虑到我有大约 1000 张图像,每次对该图像进行投票时,给每个图像一个 objectId + 查询 Parse 似乎有点太多了。
var userData = PFObject(className:"UserData")
userData.setObject(0, forKey: "imageNumber")
userData.setObject(0, forKey: "totalVotes")
userData.setObject(0, forKey: "Average")
userData.saveInBackground()
对于每次用户通过点击 IBAction 对图像(1-10)进行投票时,我想通过增加 1)总投票数、2)最新投票的新平均值和 3)我想要更新 Parse更新用户界面以显示这一点。
现在,这是我没有运气的尝试。这是错误的并且不起作用,我基于发布的其他问题以及 Parse 文档中的问题。
这就是我现在所拥有的:
@IBAction func one(sender: UIButton) {
//This is "one" vote. There are 9 more IBActions that do the exact same thing
//Here is where I would update the labels on the UI
// I would also have a function that is triggered to update parse based on this increment to the total # of votes and the average.
// This would also update the UI based on the votes received, querying the data from Parse.
}
func updateParse() {
var randNumber = Int32()
counter = 0
counter++
var query = PFQuery(className:"UserData")
query.countObjectsInBackgroundWithBlock {
(count: Int, error: NSError!) -> Void in
if error == nil {
randNumber = arc4random_uniform(count)
query2.whereKey("ImageNumber", equalTo:randNumber)
query2.getFirstObjectInBackgroundWithBlock {
(userData: PFObject!, error: NSError!) -> Void in
if error != nil {
println(error)
} else {
let votes = userData["totalVotes"] as Int
}
}
}
}
}
我试图找到一个与图像编号匹配的数字,以便根据用户使用的图像,当用户点击投票时,IBaction 将触发该函数将查找图像与 Parse 匹配的 objectID。
我在查询 Parse 以更新它所在的图像时遇到问题,因为我不知道如何仅更新该行。
有任何想法吗?太感谢了...
PS,
多亏了问题的反馈,让事情变得更清楚:
我不需要 100000 个 objectId。当用户在特定图像上时,我只需要更新相应的行。
例如:如果用户在 image783 上并对该图像进行投票并将该图像评为“7”作为评分,我想在解析时将“7”添加到 image783 的“totalVotes”中的该行,以便该图像现在具有平均/总数增加了 7 票,最终影响该图像的总平均数和图像收到的总票数(我将计算 Xcode 文件中的平均值)。总票数和所有用户的平均票数最终将通过 Parse 查询显示在 UI 上。