查询解析以在Swift中预加载所有objectID数据

查询解析以在Swift中预加载所有objectID数据,swift,parse-platform,pfquery,querying,pfobject,Swift,Parse Platform,Pfquery,Querying,Pfobject,我正在Swift中构建一种热或不热风格的应用程序,用户可以在其中投票:热、不,可能分别在图像上投票 对于用户每次访问图像,他们都会进行投票,然后对于每个投票,IBAction会触发一个查询,显示解析的总投票数和总HOT的结果,如下面的代码所示 我计划有1000张图片 我是否可以预加载对应于每个图像的所有objectid,然后当用户对图像进行投票时,数据已经从parse预加载/查询?我该怎么做呢 现在,我正在为每个ObjectID编写一个查询,它将从1000个不同的图像中获取1000个查询。。。显

我正在Swift中构建一种热或不热风格的应用程序,用户可以在其中投票:热、不,可能分别在图像上投票

对于用户每次访问图像,他们都会进行投票,然后对于每个投票,IBAction会触发一个查询,显示解析的总投票数和总HOT的结果,如下面的代码所示

我计划有1000张图片

我是否可以预加载对应于每个图像的所有objectid,然后当用户对图像进行投票时,数据已经从parse预加载/查询?我该怎么做呢

现在,我正在为每个ObjectID编写一个查询,它将从1000个不同的图像中获取1000个查询。。。显然无法缩放

swipePosition变量只是一个计数器,用于计算用户在哪个图像上。存储的图像现在存储在一个数组中,存储在Xcode上。如果它们存储在Parse上,也许也可以预加载它们

(我只展示了“hotButtonQuery”功能,但也有一个Not(可能是buttonQuery)功能…)

有没有办法简化此代码,使其具有可伸缩性?因为到目前为止,我无法缩放超过25张图片

非常感谢

func hotButtonQuery() {
    if swipePosition == 0 {
        var query = PFQuery(className:"UserData")
        query.getObjectInBackgroundWithId("RlvK3GhfqE") {
            (userData: PFObject!, error: NSError!) -> Void in
            if error != nil {

                println(error)
            }

            else {
            userData.incrementKey("totalVotes", byAmount: 1)
            userData.incrementKey("hot", byAmount: 1)

                var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger

                var updateHotsUILabel = userData.objectForKey("hot") as NSInteger

                userData.saveInBackground()

                println("parse was updated!")

                self.totalVotesLabel.text = String(updateTotalVotesUILabel)
                self.totalHotsLabel.text = String(updateHotsUILabel)
            }
        }
    } else if swipePosition == 1 {
            var query = PFQuery(className:"UserData")
            query.getObjectInBackgroundWithId("30WlVtgurP") {
                (userData: PFObject!, error: NSError!) -> Void in
                if error != nil {

                    println(error)
                }

                else {
                    userData.incrementKey("totalVotes", byAmount: 1)
                    userData.incrementKey("hot", byAmount: 1)


                    var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger

                    var updateHotsUILabel = userData.objectForKey("hot") as NSInteger

                    //println(userData.objectForKey("totalVotes"))
                    //println("total HOTs:")
                    //println(userData.objectForKey("hot"))

                    userData.saveInBackground()

                    println("parse was updated!")


                    self.totalVotesLabel.text = String(updateTotalVotesUILabel)
                    self.totalHotsLabel.text = String(updateHotsUILabel)


                }
            }
    } else if swipePosition == 3 {
        var query = PFQuery(className:"UserData")
        query.getObjectInBackgroundWithId("5D6ARjk3xS") {
            (userData: PFObject!, error: NSError!) -> Void in
            if error != nil {

                println(error)
            }

            else {
                userData.incrementKey("totalVotes", byAmount: 1)
                userData.incrementKey("hot", byAmount: 1)


                var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger

                var updateHotsUILabel = userData.objectForKey("hot") as NSInteger

                //println(userData.objectForKey("totalVotes"))
                //println("total HOTs:")
                //println(userData.objectForKey("hot"))

                userData.saveInBackground()

                println("parse was updated!")


                self.totalVotesLabel.text = String(updateTotalVotesUILabel)
                self.totalHotsLabel.text = String(updateHotsUILabel)


            }
        }
    }

恕我直言,我建议重新考虑你的整个方法。不要在代码中存储objectid。不要一次又一次地重复本质上相同的代码块。保持简单:

  • 检索和显示图像
  • 捕获投票并保存对象
  • 查询下一个对象并重复该过程
  • 如果您想减少查询的数量,可以将它们分为10个左右的批。加载所有内容没有意义,因为用户不太可能点击全部1000


    唯一需要弄清楚的是,你将如何跟踪用户已经投票的图像。您可以在客户端或在解析中执行此操作。有一些不错的方法。

    谢谢你的诚实。我完全同意你的方法。我是新的swift和编程人员,你对我能做什么有什么建议吗?我如何组织它?这将非常有帮助。。。感谢最近的一个iOS项目(我有预感),我在Parse中使用了
    Response
    表来跟踪用户的操作。因此,查找下一个问题的查询包含一个where子句,以排除用户已经回答的问题。因为这是一个不同的问题,所以我鼓励您提出一个关于如何在解析中执行“notin”查询的新问题。