为什么我的查询结果会随机回来?

时间:2016-09-09 13:31:05

标签: sql arrays swift for-loop

我正在查询SQL数据库,但由于某种原因,结果项会随机返回。这是我的代码:

for items in searchFriendEmailArrayNew {

        let query = table.query(with: NSPredicate(format: "email == '\(items)'"))

        query.selectFields = ["isriding"]

        query.read { (result, error) in
            if let err = error {

                print("ERROR ", err)

            } else if let items = result?.items {

                for item in items {

                    let theItem = item["isriding"] as! Bool
                    let newItem = String(theItem)

                    self.searchFriendIsRidingArray.add(newItem)

                    loopCount = loopCount+1

                    if loopCount == self.friendsArray.count {

                        self.tableView.reloadData()
                        self.activityIndicator.isHidden = true
                        self.activityIndicator.stopAnimating()
                    }
                }

            }

        }

    }

searchFriendEmailArrayNew是一个电子邮件地址数组,这样当我查询数据库表时,它会使用电子邮件来查找该用户。数组始终保持一致且顺序相同:

  • user1@email.com
  • user2@email.com
  • user3@email.com
  • user4@email.com

查询总是按此顺序完成。

然后我查询用户的选定字段,在这种情况下,我正在查询'isriding'字段。这个字段是bool返回true或false。

但是,当我进入'for item in items'时,结果会以随机顺序返回。例如,假设user1'正在骑马= true'但所有其他用户都是false,返回的项目可能如下所示:

  • isriding false
  • isriding false
  • 正在 true
  • isriding false

如果我再次运行代码,它可能如下所示:

  • 正在 true
  • isriding false
  • isriding false
  • isriding false

任何人都可以建议他们为什么会以随机顺序回来,即使在查询表格时也总是以特定顺序查询。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可能需要在构建查询时指定订单,否则结果的顺序可能与您提供的顺序不同。

  

可以使用' Order by'来强制执行查询的顺序。条款   该声明。 SQL数据库实际上并不了解什么顺序   你把东西放进去,或者以给定的顺序存储数据。这意味着   你需要告诉SQL你想要这些项目的顺序。

Why do results from a SQL query not come back in the order I expect?