【发布时间】:2021-07-24 21:31:36
【问题描述】:
我想删除 addShops 类型数组中的重复文档,这是我创建的自定义对象,用于添加我的文档并稍后在 tableView 中查看它们。
我想知道如何检查数组中是否已经存在 Firestore 文档?
我在 swift 和 iOS 开发方面处于中级水平,所以我仍然不了解数组和 Firebase Firestore 方面的任何高级知识。
所以,我将不胜感激。
这是我的代码:
addShop:
protocol DocumentSerializable {
init?(dictionary:[String:Any])
}
struct addShop {
var shopPID:String
var name:String
var location:String
var numTables:String
var traffic:String
var indoor:Bool
var outdoor:Bool
var drivethru:Bool
var takeaway:Bool
//images URL
var shopProfileImage:String
var shopHeaderImage:String
//true or false
var sponsered:Bool
//Numbers
var ratings:Float
var contactNumber:String
var dictionary:[String:Any]
{
return [
"shopPID":shopPID,
"name":name,
"location":location,
"numTables":numTables,
"traffic":traffic,
"indoor":indoor,
"outdoor":outdoor,
"drivethru":drivethru,
"takeaway":takeaway,
"ShopProfileImg":shopProfileImage,
"ShopHeaderImg":shopHeaderImage,
"sponsered":sponsered,
"ratings":ratings,
"contactNumber":contactNumber
]
}
}
extension addShop : DocumentSerializable {
init?(dictionary:[String:Any]) {
guard let shopPID = dictionary["shopPID"] as? String,
let name = dictionary["name"] as? String,
let location = dictionary["location"] as? String,
let numTables = dictionary["numTables"] as? String,
let traffic = dictionary["traffic"] as? String,
let indoor = dictionary["indoor"] as? Bool,
let outdoor = dictionary["outdoor"] as? Bool,
let drivethru = dictionary["drivethru"] as? Bool,
let takeaway = dictionary["takeaway"] as? Bool,
let shopProfileImage = dictionary["ShopProfileImg"] as? String,
let shopHeaderImage = dictionary["ShopHeaderImg"] as? String,
let sponsered = dictionary["sponsered"] as? Bool,
let ratings = dictionary["ratings"] as? Float,
let contactNumber = dictionary["contactNumber"] as? String
else {return nil}
self.init(shopPID: shopPID, name: name, location: location, numTables: numTables,traffic: traffic,indoor:indoor,outdoor:outdoor,drivethru:drivethru,takeaway:takeaway ,shopProfileImage: shopProfileImage,shopHeaderImage: shopHeaderImage,sponsered: sponsered, ratings: ratings,contactNumber:contactNumber)
}
}
我要检查数组中文档的 Firestore 代码:
func getNextShops() {
if self.lastDoc != self.firestoreLastDocument{
db.collection("Shops").order(by: "__name__").start(afterDocument: lastDoc!).limit(to: 8).getDocuments(){ docs, err in
self.docsCount = docs?.count
if self.docsCount == 0{
self.tableView.stopLoading()
return
}else{
if let err = err {
print(err.localizedDescription)
}else{
docs?.documents.forEach{ data in
//here i want to check if the document already exists,
//if it exists do not append it again to the array.
self.shops.append(addShop(dictionary: data.data())!)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
self.lastDoc = docs?.documents[(docs?.documents.endIndex)! - 1]
self.lastDocID = self.lastDoc?.documentID
}
}
}
} else {
}
}
【问题讨论】:
标签: ios arrays swift firebase google-cloud-firestore