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

前端之家收集整理的这篇文章主要介绍了ios – 通过Swift应用程序中的自定义Parse列进行迭代前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何存储整个自定义列(来自自定义类的用户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语句不起作用,我必须把它拿出来保存…)

stuff that happens

解决方法

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

在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相关文章