Ios Swift&x2B;Firebase:使用对服务器的查询随机拾取一组对象
我正在使用Swift和Firebase作为后端为iOS构建一个测验应用程序。我希望能够进行一个查询,选择10个随机问题并返回它们Ios Swift&x2B;Firebase:使用对服务器的查询随机拾取一组对象,ios,swift,firebase,Ios,Swift,Firebase,我正在使用Swift和Firebase作为后端为iOS构建一个测验应用程序。我希望能够进行一个查询,选择10个随机问题并返回它们 首先,对于我的答案,你需要给每个问题一个如下值: { "question1": { "question" : "Do you know swift", "answer" : "Nope", "value": 1 }, "question2": { "questi
首先,对于我的答案,你需要给每个问题一个如下值:
{
"question1": {
"question" : "Do you know swift",
"answer" : "Nope",
"value": 1
},
"question2": {
"question" : "Do you know firebase",
"answer" : "A bit",
"value" : 2
}
}
{
"rules": {
"questions": {
".indexOn": ["value"]
}
}
}
之后,建议在firebase规则()中添加索引,如下所示:
{
"question1": {
"question" : "Do you know swift",
"answer" : "Nope",
"value": 1
},
"question2": {
"question" : "Do you know firebase",
"answer" : "A bit",
"value" : 2
}
}
{
"rules": {
"questions": {
".indexOn": ["value"]
}
}
}
接下来是swift部分:
//Use a for loop to get 10 questions
for _ in 1...10{
//generate a random number between 1 and the amount of questions you have
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1
//The reference to your questions in firebase (this is an example from firebase itself)
let ref = Firebase(url: "https://dinosaur-facts.firebaseio.com/dinosaurs")
//Order the questions on their value and get the one that has the random value
ref.queryOrderedByChild("value").queryEqualToValue(randomNumber)
.observeEventType(.ChildAdded, withBlock: {
snapshot in
//Do something with the question
println(snapshot.key)
})
}
实际的swift代码可能有缺陷,对于firebase特定的代码,请查看firebase没有服务器端
random()
操作,因此这是不可能的。不久前在@FrankvanPuffelen上有过一次关于这一点的不错的讨论。这篇文章的问题是我计划有很多问题,检索问题,然后随机挑选一些问题所需的时间只会越来越长,因为问题越来越多。不是一次得到10个问题,而是十次得到1个问题。@AndréKool我需要随机挑选问题,虽然我会在10分钟左右后发布答案,我的英语不太好swift@Andr埃库利刚刚检查了这个,我有两个错误。我将在我的原始帖子中添加一个错误的屏幕截图。我在我的答案中更新了for循环,希望正确的swift代码,这应该可以解决第一个错误,第二个错误是因为你在末尾添加了一个额外的括号,所以只需删除它。请记住,我编写了示例代码,简单地复制并通过它会给您带来一些错误。您至少需要更改对firebase的引用以匹配您自己的frebase。这不是一个好的选择,因为您将对服务器进行大量调用