在firebase IOS中按用户的全名搜索所有用户

时间:2016-06-17 11:00:04

标签: ios swift elasticsearch firebase firebase-realtime-database

我在项目中添加了UISearchBarUITableView。我需要根据UISearchBar中的文本过滤所有用户并显示在tableview中。我在firebase文档中研究查询,但我没有找到。我只需要部分字符串的firebase查询。谁能帮我?

3 个答案:

答案 0 :(得分:4)

我相信你在firebase数据库中有这些

  • 的firstName
  • lastName的

并且firebase不会让你做多个where子句,为了解决这个问题,只需添加一个新字段,这样就会变成这样的

  • 的firstName
  • lastName的
  • 全名


ref.child("users")
   .queryOrderedByChild("fullName")
   .queryEqualToValue("your full name")
   .observeSingleEventOfType(.Value, withBlock: { (snapshot) -> Void in

   }

答案 1 :(得分:0)

你看过page了吗?

我认为QueryToValue在这里很有用。

答案 2 :(得分:-2)

你好希望这可以帮助你..如果这个ans工作,那么请正确,以便其他用户可以很快识别答案....

我希望我理解你的问题......

@IBOutlet var searchBar: UISearchBar!

@IBOutlet var tblview: UITableView!

第1步: - 制作图书

let data =
["xxx", "india, CA", "pakistan", "usa",
    "china", "fgsfsgs", "San Diego, CA", "San Antonio, TX",
    "Dallas, TX", "Detroit, MI"]

步骤2: - 在viewDidLaod()方法

之上声明此变量全局
 var filteredData: [String]!

第3步: -

override func viewDidLoad()
{
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    tblview.dataSource = self
    searchBar.delegate = self
    filteredData = data

}

第4步:使用Tableview委托方法

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

    let cell:UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Default, reuseIdentifier:"cell")
    cell.textLabel?.text = filteredData[indexPath.row]

    return cell
}

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return filteredData.count
}

第5步 - 使用以下方法..

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) 
{
    // When there is no text, filteredData is the same as the original data
    if searchText.isEmpty {
        filteredData = data //use your array in place od data
    } else {
        // The user has entered text into the search box
        // Use the filter method to iterate over all items in the data array
        // For each item, return true if the item should be included and false if the
        // item should NOT be included
        filteredData = data.filter({(dataItem: String) -> Bool in
            // If dataItem matches the searchText, return true to include it
            if dataItem.rangeOfString(searchText, options: .CaseInsensitiveSearch) != nil {
                return true
            } else {
                return false
            }
        })
    }
    self.tblview.reloadData()
}