【发布时间】:2021-05-14 18:05:36
【问题描述】:
我正在开发一个连接到 Firestore 的食谱应用程序,但无法读取保存在数据库中的数据。我保存了一个由标题、ID 等组成的食谱,但它也包含一系列成分。这个数组是一个包含 id、name 和 amount 的结构体。我能够获取配方对象,但成分数组为空。这就是获取食谱的方法
private func listenForRecipes() {
db.collection("recipe").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.recipes = documents.map { queryDocumentSnapshot -> RecipePost in
let data = queryDocumentSnapshot.data()
let title = data["title"] as? String ?? ""
let steps = data["steps"] as? [Step] ?? []
let ingredients = data["ingredients"] as? [Ingredient] ?? []
let serves = data["serves"] as? Int ?? 0
let author = data["author"] as? String ?? ""
let authorId = data["authorId"] as? String ?? ""
let category = data["category"] as? String ?? ""
let image = data["image"] as? String ?? ""
print("\(ingredients)")
return RecipePost(title: title, steps: steps, ingredients: ingredients, serves: serves, author: author, authorId: authorId, category: category, image: image)
}
}
}
感谢您的帮助。
【问题讨论】:
-
这实际上很容易纠正。如果你的成分是一个字符串数组,你可以简单地做
let ingredients = dataSnapshot?.get("ingredients") as? [String] ?? [String]()。这将生成一个字符串数组。要对此进行扩展,您还可以获得其他数据,但 Firestore 没有 Struct 字段类型(根据您的问题),因此我们需要知道它的实际外观。它应该很简单,但需要更多数据。
标签: swift firebase google-cloud-firestore swiftui