gpt4 book ai didi

ios - 在 iOS swift 中创建一个保存在 Parse 中的计数器

转载 作者:行者123 更新时间:2023-11-29 01:27:48 25 4
gpt4 key购买 nike

我正在尝试创建每个用户在使用我的应用程序时赚取的积分计数器。我想在后端解析中保存计数器。

这是我使用的代码,

创建计数器,

var gameScore = PFObject(className: "GameScore")
gameScore.setObject(0, forKey: "score")
gameScore.setObject(PFUser.currentUser()!.username!, forKey: "username")
gameScore.saveInBackground()

将计数器更新 5,

 var oldScore = Int?()
var gameScore = PFObject(className: "GameScore")
var query = PFQuery(className: "GameScore")
query.whereKey("username", equalTo: (PFUser.currentUser()?.username)!)
query.findObjectsInBackgroundWithBlock {
(gameResult: [PFObject]?, error: NSError?) -> Void in
if error == nil {
let firstObject = gameResult![0]
oldScore = firstObject["score"] as? Int
}

gameScore.setObject(oldScore! + 5, forKey: "score")
gameScore.setObject(PFUser.currentUser()!.username!, forKey: "username")

这似乎不是最好的方法,因为我没有使用 Parse 对象的内置函数,如incrementKey()另外,每次更新时,我最终都会为同一用户创建一个新行。计数器的值也不会增加而是保持为零。有没有更好的方法在用户级别执行此操作?

最佳答案

如果您想停止为分数创建新对象,请在创建之前测试该用户是否存在分数对象。您已经拥有该代码:

var query = PFQuery(className: "GameScore")
query.whereKey("username", equalTo: (PFUser.currentUser()?.username)!)
query.findObjectsInBackgroundWithBlock {
(gameResult: [PFObject]?, error: NSError?) -> Void in

...

只需添加一个检查,例如

if gameResult.count == 0 {
// Create a new game score here.
var gameScore = PFObject(className: "GameScore")
gameScore.setObject(0, forKey: "score")
gameScore.setObject(PFUser.currentUser()!.username!, forKey: "username")
gameScore.saveInBackground()
}

增加分数时,使用increment键可以省去额外的代码:

gameScore.incrementKey("score", byAmount: 5)
gameScore.saveInBackground()

关于ios - 在 iOS swift 中创建一个保存在 Parse 中的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com