我正在创建一个涉及问题和事实的应用程序,我需要随机选择它们。将会有大量不同的,我不想为每一个输入ObjectId。有没有办法获得随机行的ObjectId所以我不必为对象中的每个问题或事实写入对象ID?
答案 0 :(得分:1)
实现目标的三个步骤:
arc4random()
或0和该数字之间的其他方法创建随机整数。PFQuery
,skip
设置为随机整数,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数据库添加索引列,并将其用作有效检索随机行的密钥。