将 [字符串:字符串]' 分配给键入"[[字符串:字符串]]"



我正在尝试编写一个搜索函数,该函数将在表视图中返回搜索的用户。用户数据保存在Firestore数据库中(buddiesCollectionRef)。当我尝试将从 firestore 获取的数据分配到如下所示的字典数组中时,我可以成功地从 firestore 获取数据:private var users = [[String: String]](), 我收到错误

无法将类型"[字符串:字符串]">

的值分配给类型"[[字符串:字符串]]">

请帮忙。

func searchUsers(query: String) {
//check is array has firebase results
if hasFetched {
//filter results
filterUsers(with: query)
} else {
//fetch and then filter reults
buddiesCollectionRef.addSnapshotListener { snapshot, error in
guard let snap = snapshot else {
debugPrint("Error fetching documents: (String(describing: error))")
return
}
for document in snap.documents{
if let userInfo = document.data() as? [String: String] {
let name = userInfo["name"] ?? ""
let userId = userInfo["uid"] ?? ""

//test
print("name: (name), uid: (userId)")

// update users array with fetched users
self.hasFetched = true
self.users = userInfo
self.filterUsers(with: query)
}
}
}
}
}
func filterUsers(with term: String){
guard hasFetched else {
return
}
self.spinner.dismiss()

let results: [[String:String]] = self.users.filter ({
guard let name = $0["name"]?.lowercased() else {
return false
}
print(name)
return name.hasPrefix(term.lowercased())
})
self.results = results
updateUI()

}

[[String: String]][String: String]的类型不同。因此,您无法将一个分配给另一个。

  • [String: String]:具有String键和值的字典,即:Dictionary<String, String>
  • [[String: String]]:字典的数组,即:Array<Dictionary<String, String>>

从您拥有的 for 循环来看,我假设您想附加它们?试试这个:

self.users.append(userInfo)

最新更新