如何计算 parse.com class 中的对象以获得从中提取随机数的总数?
How to count objects in parse.com class to get total number from which to pull a random number?
当我尝试计算我的 parse.com class 的对象时出现错误。我需要计算对象的总数,这样我就可以得到一个随机数并使用它来查询一个对象。我的数据 table 中有一列名为 Qnum,它为每个对象编号。这是我的功能:
func CallData() {
var query = PFQuery(className: "QuestionsandAnswers")
let randomNumber = arc4random_uniform(count)
var randomNumberCast = Int(randomNumber)
query.whereKey("Qnum", equalTo: randomNumberCast)
query.getFirstObjectInBackgroundWithBlock { (object: PFObject!, error: NSError!) -> Void in
if (error == nil) {
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong, dude. Sorry.")
}
}
}
我的错误出现在函数的第二行 "let randomNumber = arc4random_uniform(count)" 我试过 (objects.count) 没有用;然而,当我只插入对象总数时,它起作用了,(20) 但我想避免对该数字进行硬编码,以防我需要向我的 class 添加更多对象。对这个新手有什么建议吗?
解决方案: danh 在下面提供了答案,但由于我只需要更改一些东西,我不知道如何 post 修改后的评论中的代码,我正在编辑这个已回答的问题,现在包括解决方案。这是有效的代码:
func CallData() {
var countQuery = PFQuery(className: "QuestionsandAnswers")
countQuery.countObjectsInBackgroundWithBlock { (count: Int32, error: NSError!) -> Void in
if (error == nil) {
let randomNumber = Int(arc4random_uniform(UInt32(count)))
var query = PFQuery(className: "QuestionsandAnswers")
query.skip = randomNumber
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if (error == nil) {
var object: AnyObject = objects[0]
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong with the find request, dude. Sorry. %@", error)
}
}
} else {
NSLog("Something is wrong with the count request, dude. Sorry. %@", error)
}
}
}
只有知道计数才能使用,知道需要调用计数 api。一旦你有了计数,你就可以用它来绑定一个随机数。
random 可用于基于"Qnum" 字段的查找,或用作不合格查询的跳过。跳过不太容易出错,因为它只取决于计数。
不说 swift,我尽力拼凑出此建议的 swift 形式。以下在语法上可能有点错误,但我很确定它的基本思想是正确的...
var countQuery = PFQuery(className: "QuestionsandAnswers")
countQuery.countObjectsInBackgroundWithBlock { (count: Int, error: NSError!) -> Void in
if (error == nil) {
let randomNumber = Int(arc4random_uniform(UInt32(count)))
var query = PFQuery(className: "QuestionsandAnswers")
query.skip = randomNumber
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if (error == nil) {
var object: AnyObject = objects[0]
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong with the find request, dude. Sorry. %@", error)
}
}
} else {
NSLog("Something is wrong with the count request, dude. Sorry. %@", error)
}
}
当我尝试计算我的 parse.com class 的对象时出现错误。我需要计算对象的总数,这样我就可以得到一个随机数并使用它来查询一个对象。我的数据 table 中有一列名为 Qnum,它为每个对象编号。这是我的功能:
func CallData() {
var query = PFQuery(className: "QuestionsandAnswers")
let randomNumber = arc4random_uniform(count)
var randomNumberCast = Int(randomNumber)
query.whereKey("Qnum", equalTo: randomNumberCast)
query.getFirstObjectInBackgroundWithBlock { (object: PFObject!, error: NSError!) -> Void in
if (error == nil) {
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong, dude. Sorry.")
}
}
}
我的错误出现在函数的第二行 "let randomNumber = arc4random_uniform(count)" 我试过 (objects.count) 没有用;然而,当我只插入对象总数时,它起作用了,(20) 但我想避免对该数字进行硬编码,以防我需要向我的 class 添加更多对象。对这个新手有什么建议吗?
解决方案: danh 在下面提供了答案,但由于我只需要更改一些东西,我不知道如何 post 修改后的评论中的代码,我正在编辑这个已回答的问题,现在包括解决方案。这是有效的代码:
func CallData() {
var countQuery = PFQuery(className: "QuestionsandAnswers")
countQuery.countObjectsInBackgroundWithBlock { (count: Int32, error: NSError!) -> Void in
if (error == nil) {
let randomNumber = Int(arc4random_uniform(UInt32(count)))
var query = PFQuery(className: "QuestionsandAnswers")
query.skip = randomNumber
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if (error == nil) {
var object: AnyObject = objects[0]
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong with the find request, dude. Sorry. %@", error)
}
}
} else {
NSLog("Something is wrong with the count request, dude. Sorry. %@", error)
}
}
}
只有知道计数才能使用,知道需要调用计数 api。一旦你有了计数,你就可以用它来绑定一个随机数。
random 可用于基于"Qnum" 字段的查找,或用作不合格查询的跳过。跳过不太容易出错,因为它只取决于计数。
不说 swift,我尽力拼凑出此建议的 swift 形式。以下在语法上可能有点错误,但我很确定它的基本思想是正确的...
var countQuery = PFQuery(className: "QuestionsandAnswers")
countQuery.countObjectsInBackgroundWithBlock { (count: Int, error: NSError!) -> Void in
if (error == nil) {
let randomNumber = Int(arc4random_uniform(UInt32(count)))
var query = PFQuery(className: "QuestionsandAnswers")
query.skip = randomNumber
query.limit = 1
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if (error == nil) {
var object: AnyObject = objects[0]
self.Question = object ["Question"] as String!
self.Answers = object ["Answers"] as Array!
self.Answer = object ["Answer"] as String!
if (self.Answers.count > 0) {
self.QuestionLabel.text = self.Question
self.Button1.setTitle(self.Answers[0], forState: UIControlState.Normal)
self.Button2.setTitle(self.Answers[1], forState: UIControlState.Normal)
self.Button3.setTitle(self.Answers[2], forState: UIControlState.Normal)
self.Button4.setTitle(self.Answers[3], forState: UIControlState.Normal)
}
} else {
NSLog("Something is wrong with the find request, dude. Sorry. %@", error)
}
}
} else {
NSLog("Something is wrong with the count request, dude. Sorry. %@", error)
}
}