【发布时间】:2020-12-10 04:51:46
【问题描述】:
目前我有一个从“项目”集合中获取“项目”列表的屏幕。用户应该能够选择多个项目,并在按下按钮时将它们添加到“电影”集合中的文档中。我似乎无法弄清楚如何编写将这些项目列表写入电影文档的函数。
下面的代码示例
这是获取项目的循环(目前工作)
let movie: Movie
@State var selections: [String] = []
@ObservedObject private var viewModel = ItemsViewModel()
@State private var isSelected = false
@State var movieID = ""
var body: some View {
VStack {
ForEach(viewModel.items.indices, id: \.self) { i in
Button(action: { viewModel.items[i].isSelected.toggle() }) {
HStack {
if viewModel.items[i].isSelected {
Text(viewModel.items[i].name)
.foregroundColor(.white)
.font(.system(size: 16, weight: .bold))
Spacer()
Image(systemName: "checkmark")
.foregroundColor(ColourManager.pinkColour)
.font(.system(size: 16))
} else {
Text(viewModel.items[i].name)
.foregroundColor(Color(.systemGray))
.font(.system(size: 16))
Spacer()
}
}
.padding(.vertical, 10)
.padding(.horizontal)
}
Divider()
}
}
.onAppear() {
self.viewModel.fetchData()
}
按钮调用函数
Button(action: { self.addItems() }) {
HStack {
Text("Add Selected Items")
}
写入 Firestore 的函数
func addItems() {
let db = Firestore.firestore()
db.collection("movies").document(self.movieID).setData(["item": [self.selections]])
}
我希望 Firestore 数据库看起来像:
{
movieID: 12345,
movieName: "Goodfellas",
items: [
item: "item 1",
item: "item 2"
]
}
到目前为止,我的movieID 和movieName 都在工作,只是不知道如何记录选择并将它们写为项目。任何帮助将不胜感激!
【问题讨论】:
标签: swift firebase google-cloud-firestore swiftui