Внутри моего приложения пользователь может создать простой список, и в этом списке есть несколько values
, которые мне нужно сохранить.
Это шаги, которые я хотел бы выполнить с помощью Cloud-Firestore когда пользователь нажимает на createListButton
:
1. для получения value
2. используйте это value
save/store
список с его свойствами.
Мне удалось реализовать 2 functions
:
getListCounter:
static func getListCounter(finished: @escaping (_ done: Bool) -> Void){
let db = Firestore.firestore()
let userID = Auth.auth().currentUser!.uid
let docRef = db.collection("users").document(userID)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let property = document.get("listCounter")
print("Document data: \(String(describing: property))")
finished(true)
} else {
print("Document does not exist")
finished(false)
}
}
}
и saveWishlist:
static func saveWishlist(wishListName: String, imageArrayIDX: Int, wishListIDX: Int, textColor: String) {
// auto create custom Wishlist with name/listIDX/imageIDX
let db = Firestore.firestore()
let userID = Auth.auth().currentUser!.uid
let batch = db.batch()
// Set username and uid for user
let userRef = Firestore.firestore().collection("users").document(userID)
batch.updateData(["listCounter": wishListIDX], forDocument: userRef)
let listRef = db.collection("users").document(userID).collection("wishlists").document(wishListName)
batch.setData(["name": wishListName, "listIDX": wishListIDX, "imageIDX" : imageArrayIDX, "textColor": textColor], forDocument: listRef)
batch.commit { (error) in
if let error = error {
Utilities.showErrorPopUp(labelContent: "Liste konnte nicht gespeichert werden", description: error.localizedDescription)
}
}
}
Как вы можете видеть, я использую wishListIDX
дважды внутри saveWishlist
, и значение для этого должно быть результатом getListCounter
.
Проблема в том, что я действительно не знаю, как мне этого добиться, getListCounter
фактически возвращает value
как Int
.
Если бы я получил это, я мог бы просто позвонить: var counter = getListCounter()
верно? Но использование этого для parameter
в saveList
может вызвать проблемы, потому что функции асинхронные не так ли?
Если кто-нибудь может помочь мне с этими двумя проблемами, я был бы более чем благодарен!