Parse中的随机行

时间:2015-10-24 01:03:18

标签: ios swift parse-platform

我正在创建一个涉及问题和事实的应用程序,我需要随机选择它们。将会有大量不同的,我不想为每一个输入ObjectId。有没有办法获得随机行的ObjectId所以我不必为对象中的每个问题或事实写入对象ID?

2 个答案:

答案 0 :(得分:1)

实现目标的三个步骤:

  1. 提前了解或了解您需要查看的问题数量。
  2. 使用arc4random()或0和该数字之间的其他方法创建随机整数。
  3. 在问题类上创建PFQueryskip设置为随机整数,limit设置为1

答案 1 :(得分:0)

这是一个用于检索问题的功能,只有前1000个问题,并在本地保存:

func saveAllObjectsLocally() {
    let query = PFQuery(className: “Questions”)
    query.limit = 1000
    query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
        if error == nil {
            if let objects = objects {
                do {
                    try PFObject.pinAllInBackground(objects)
                } catch let error as NSError? {
                    print("error \(error)")
                }
            }
        } else {
            print("Error: \(error!) \(error!.userInfo)")
        }
    }
}

在本地保存后,可以选择一个随机问题:

func getRandomQuestion() -> PFObject? {
    let query = PFQuery(className: “Questions”)
    query.fromLocalDatastore()
    query.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) -> Void in
        if let objects = objects {
            let randomIndex = arc4random_uniform(UInt32(objects.count))
            return objects[Int(randomIndex)]
        }           
    }
    return nil
}

每次需要随机问题时,这比访问网络要快。

如果您需要从云中访问问题,可以向Parse数据库添加索引列,并将其用作有效检索随机行的密钥。