将用户指针列保存到数组解析swift

时间:2015-11-10 01:01:45

标签: ios swift parse-platform

我正在尝试将总用户存储在列中并查看用户是否已存在,如果存在,则不会创建新的对象ID,但如果没有,则会生成新的对象ID 。在附件中你会看到它创建了多个对象id,即使用户已经存在,所以不是更新得分,它会创建新的,而且永远不会离开if语句的第一部分,因为只有行的对象ID在那里而不是用户对象ID。

这是我的代码:

func saveScoresOnParse() {

    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)

        } 

        for (var i = 0 ; i < objectUserIdArray.count ; i++) {

            if self.userID != objectUserIdArray[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 == objectUserIdArray[i] {

                print("Updates 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")

            }

        }
    }

这就是:

enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为你的循环声明表明它应该在from django.db import models, migrations def date_to_datetime(apps, schema_editor): # We can't import the Person model directly as it may be a newer # version than this migration expects. We use the historical version. Product = apps.get_model("yourappname", "Product") for product in Product.objects.all(): # convert a date to a date time on the product instance product.save() class Migration(migrations.Migration): dependencies = [ ('yourappname', 'migration_name'), ] operations = [ migrations.RunPython(date_to_datetime), ] 大于i时运行,并且你从objectUserIdArray.count开始。{{1一开始就超过i。 (最多它可以等于它,即如果i本身为0,但在这种情况下不需要循环。)而是在objectUserIdArray.count小于{时使循环运行{1}}。

objectUserIdArray.count

关于第二个问题,因为我无法分辨检查中涉及的不同变量的类型i我是否不能确定它是错误的表达,但我认为那个似乎会更好:

objectUserIdArray.count

此片段应该从您当前进行比较的循环中取出。for (var i = 0 ; i < objectUserIdArray.count ; i++) { 检查数组以查看它是否包含您要查找的项目,我认为这是您的功能寻找。目前的设置不会做这样的事情。 (这是因为你循环遍历所有可能性,但每次你做某种动作时,要么创建或编辑用户。所以如果你想知道数组是否包含你正在寻找的东西,它确实如此,但只是在最后,那么你之前运行了很多代码,你只想在阵列没有包含该项目的情况下运行,代码在最后一直都不会知道。)