Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift&x2B;Firebase:使用对服务器的查询随机拾取一组对象_Ios_Swift_Firebase - Fatal编程技术网

Ios Swift&x2B;Firebase:使用对服务器的查询随机拾取一组对象

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

我正在使用Swift和Firebase作为后端为iOS构建一个测验应用程序。我希望能够进行一个查询,选择10个随机问题并返回它们


首先,对于我的答案,你需要给每个问题一个如下值:

    {
      "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。这不是一个好的选择,因为您将对服务器进行大量调用