快速自动完成Firebase搜索

问题描述 投票:0回答:1

我已经创建了一个应用程序,用户可以在其中搜索应用程序中的帖子(用户生成的帖子)。最近,它已经到了我无法立即加载所有用户而不会崩溃的地步。

旧功能将只加载整个post节点,然后进行过滤,如下所示。是否可以复制包含更多数据的类似内容?

 self.posts.filter { (post) -> Bool in
 return 
 post.title.lowercased().contains(searchText.lowercased())
 }

我通过阅读Firebase文档创建了一个新功能。用于处理更多数据。

新功能

var users = [User]()

fileprivate func fetchUsers(username: String) {

    let ref = Database.database().reference().child("users").queryOrdered(byChild: "username").queryStarting(atValue: username).queryEnding(atValue: "\(username)\\uf8ff")
    ref.observeSingleEvent(of: .value) { (snapshot) in

        guard let dictionaries = snapshot.value as? [String: Any]
            else { return }

        dictionaries.forEach({ (key, value) in

            if key == Auth.auth().currentUser?.uid {
                return
            }

            guard let userDictionary = value as? [String: Any] else { return }

            let user = User(uid: key, dictionary: userDictionary)
            self.users.append(user)

        })

        self.users.sort(by: { (user1, user2) -> Bool in

            return user1.username.compare(user2.username) == .orderedAscending
        })

        self.collectionView?.reloadData()

        }
    }

Firebase数据库

 "users" : {
   "0Udc81ELBJP7UpYiESqPj5gLDx9A" : {
    "username" : "First_User"
  },
  "13ThJZlpkgUCcZ4zaRzzaAHFjat2" : {
    "username" : "Test_User"
 }
 },

但是,此功能令人昏昏欲睡,并且不会自动完成,因为它曾经使用过(类似于Instagram的工作方式)。您需要先在搜索栏中输入完整的单词。

我认为目前有一种方法可以自动完成搜索栏,因为它是大多数应用程序的标准配置。感谢您解决此问题的任何帮助。

我已经创建了一个应用程序,用户可以在其中搜索应用程序中的帖子(用户生成的帖子)。最近,它已经到了我无法立即加载所有用户而不会崩溃的地步。 ...

swift firebase search firebase-realtime-database
1个回答
0
投票

我的猜测是,每当用户更改搜索框中的文本时,您都在呼叫fetchUsers

© www.soinside.com 2019 - 2024. All rights reserved.