ios – 通过Swift应用程序中的自定义Parse列进行迭代

ios – 通过Swift应用程序中的自定义Parse列进行迭代,第1张

概述我想知道如何存储整个自定义列(来自自定义类的用户Pointer< _User>列)并将它们全部放在数组变量中,以便我可以查看该类中是否存在该用户.这就是我所拥有的: 旧代码 var objectUserIdArray = [String]() let objectUserIdQuery : PFQuery = PFQuery(className: "Scores") object 我想知道如何存储整个自定义列(来自自定义类的用户Pointer< _User>列)并将它们全部放在数组变量中,以便我可以查看该类中是否存在该用户.这就是我所拥有的:

旧代码

var objectUserIDArray = [String]()    let objectUserIDquery : PFquery = PFquery(classname: "scores")    objectUserIDquery.findobjectsInBackgrounDWithBlock {        (objects : [PFObject]?,error : NSError?) -> VoID in        var objectID = objects! as [PFObject]        for i in 0..<objectID.count {            objectUserIDArray.append(objectID[i].objectID!)        }        for _ in objectID {            print(objectUserIDArray)        }

新规范

func savescoresOnParse() {    objectUserIDquery.whereKey("User",equalTo: PFObject(withoutDataWithClassname: "_User",objectID: userID))    objectUserIDquery.findobjectsInBackgrounDWithBlock {        (objects : [PFObject]?,error : NSError?) -> VoID in        if error == nil {            //var objectID = objects! as [PFObject]            /*for i in 0..<objectID.count {                self.objectUserIDArray.append( objectID[i].objectID! )            }*/            for _ in objects! {                print(objects)            }            // The score key has been incremented            for (var i = 0 ; i < self.objectUserIDArray.count ; i++) {                if self.userID != objects![i] {                    print("New scores")                    print("R: \(self.rightAnswers)")                    print("W: \(self.wrongAnswers)")                    print("S: \(self.skippedQuestions)")                    self.scores["User"] = PFUser.currentUser()                    self.scores["Right"] = self.rightAnswers                    self.scores["Wrong"] = self.wrongAnswers                    self.scores["Skipped"] = self.skippedQuestions                    self.scores.saveInBackground()                } else if self.userID == objects![i] {                    print("Updated scores")                    self.scores.incrementKey("Right",byAmount: 1)                    self.scores.incrementKey("Wrong",byAmount: 1)                    self.scores.incrementKey("Skipped",byAmount: 1)                    print("R: \(self.rightAnswers)")                    print("W: \(self.wrongAnswers)")                    print("S: \(self.skippedQuestions)")                    self.scores.saveInBackgrounDWithBlock {                        (success: Bool,error: NSError?) -> VoID in                        if (success) {                            // The score key has been incremented                        } else {                            // There was a problem,check error.description                        }                    }                } else {                    print("Error")                }            }        } else {            print(error)        }    }

但它只存储objectID列而不是指针< _User>柱.我知道这一点,因为当我打印内部的东西时,它会打印出objectIDs.

这就是发生的事情,而不仅仅是更新当前用户的分数,它只会创建新的分数.我希望if语句检查用户是否已经存在于该列中,如果它确实更新了分数,如果没有,则创建新的分数. (新代码的if语句不起作用,我必须把它拿出来保存…)

解决方法 您更新的问题可以更清楚地了解您实际想要做的事情;

在Parse score对象中保存或更新用户的分数.要做到这一点,没有理由检索任何对象ID或循环任何结果.在使用Parse时,通常不会明确地使用Object IDs;你可以简单地传递对象本身,Parse会为你编制引用.

我不确定你是怎么想改变分数的;在上面的代码中,您在一个案例中增加但在另一个案例中明确地设置分数,但下面的代码显示了一般方法.

如果您经常或反复更新分数记录,那么您可以通过在第一次找到它之后在属性中保留对scores对象的引用来简化代码,并简单地更新&随后保存.

func savescoresOnParse() {    if let currentUser=PFUser.currentUser() {       let scorequery= PFquery(classname: "scores")       scorequery.whereKey("User",equalTo:currentUser)       scorequery.getFirstObjectInBackgrounDWithBlock {        (object : PFObject?,error : NSError?) -> VoID in           if error == nil {              var scoreObject=object ?? PFObject.objectWithClassname("scores")              if (scoreObject["User"]==nil) {                 scoreObject["User"]=currentUser              }              scoreObject["Right"]=self.rightAnswers              scoreObject.saveInBackground()           } else {              print(error)           }       }    } else {       print("No current user!")    }}
总结

以上是内存溢出为你收集整理的ios – 通过Swift应用程序中的自定义Parse列进行迭代全部内容,希望文章能够帮你解决ios – 通过Swift应用程序中的自定义Parse列进行迭代所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存