【发布时间】:2019-02-19 00:00:08
【问题描述】:
我需要创建一个包含Questions 数组的Categories 数组。
struct CategoryFB {
var title: String
var id: Int
var questions: [QuestionsFB]
var dictionary: [String : Any] {
return ["title" : title,
"id" : id]
}
}
extension CategoryFB {
init?(dictionary: [String : Any], questions: [QuestionsFB]) {
guard let title = dictionary["title"] as? String, let id = dictionary["id"] as? Int else { return nil }
self.init(title: title, id: id, questions: questions)
}
}
Firestore 具有以下结构
- 集合(“类别”)
- 文档(“some_id”)
- 集合(“问题”)
如何创建这样的数组?
array = [Category(title: "First",
questions: [
Question("1"),
...
]),
... ]
我的尝试是错误的:
db.collection("Categories").order(by: "id", descending: false).getDocuments {
(querySnapshot, error) in
if error != nil {
print("Error when getting data \(String(describing: error?.localizedDescription))")
} else {
for document in querySnapshot!.documents {
print(document.documentID)
self.db.collection("Categories").document(document.documentID).collection("Questions").getDocuments(completion: { (subQuerySnapshot, error) in
if error != nil {
print(error!.localizedDescription)
} else {
var questionsArray: [QuestionsFB]?
questionsArray = subQuerySnapshot?.documents.compactMap({QuestionsFB(dictionary: $0.data())})
self.categoriesArray = querySnapshot?.documents.compactMap({CategoryFB(dictionary: $0.data(), questions: questionsArray!)})
print(self.categoriesArray![0].questions.count)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
})
}
}
}
【问题讨论】:
-
首先您必须为问题创建模型,为类别创建第二个模型,然后在类别模型中创建问题模型数组。因此,当您可以创建类别模型的实例时,您可以按索引访问问题数组。能否请您显示存储的问题数组?
-
@AbhishekJadhav 代码太多.. 无法编辑。问题有:title、id、details 和一些数组。我有这个模型。现在我需要根据类别创建此对象的数组
-
您已经在类别模型中创建了问题数组,然后当您必须在类别实例的问题数组中附加任何数据时,然后创建问题实例并将其附加到问题数组中
-
@AbhishekJadhav 我明白这一点,但不能通过代码做到这一点。我收集了 10 个类别,每个类别都有 10 个文档,其中包含 20-40 个问题的集合问题。
-
问题集合中有什么?只是数组中的一系列问题?例如0:什么是……和 1:……在哪里?您能否附上实际结构的屏幕截图,因为它在问题中有点含糊。
标签: ios arrays swift firebase google-cloud-firestore