Hey All,
I am creating a grocery list app. I have the ingredients structured in an array for each list on Firestore (see image). How would I go about structuring this so each ingredient can receive specific information (weight, color, etc.)? Should I add another subcollection? Thanks!
Hi! You can create map objects inside your array. They’re basically dictionaries that you can decode and encode into/from your model in Swift.
Thank you!
Hi, Andy and Cal!
Funny enough I am working on a similar project and am wondering how you went about importing the data from the solution you just posted. Every time I try to read my items field it comes up empty. items is structured the same way (it is an array of map objects).
This is how I am currently trying to fetch the data from firebase.
func getAtHomeData() {
print(“In”)
// Specify collection path
let listCollection = db.collection(“atHome”)
// Get Documents
listCollection.getDocuments { snapshot, error in
// Check for nils
if error == nil && snapshot != nil {
// Array to track categories
var categories = [Category]()
for doc in snapshot!.documents {
var c = Category()
c.id = doc["id"] as? String ?? UUID().uuidString
c.category = doc["Category"] as? String ?? ""
c.items = doc["items"] as? [Item] ?? [Item]()
print(c.items)
categories.append(c)
}
// Assign our categories array to published atHome variable
DispatchQueue.main.async {
self.atHome = categories
}
}
}
// Specify item Collection path
}
And these are my structures:
struct Category: Identifiable {
var id: String = “”
var category: String = “”
var items = Item
}
struct Item: Identifiable {
var id: String = “”
var name: String = “”
var quantity: Int = 0
}
And my database looks like
Hey Mullen,
I am actually still struggling reading the data. I believe you have to iterate over the “item” array, but I have not gotten the syntax correct.