如何解决当使用带有多个选项的swiftui选择器时如何将所选选项而不是索引值保存到Cloud Firestore?
我希望能够访问和使用该位置。当前,只有来自选择器的索引值被保存到Cloud Firestore。
以下是选择器:
Picker(selection: $viewModel.injury.locationIndex,label: Text("General Location")) {
ForEach(0 ..< locationOptions.count) {
Text(self.locationOptions[$0])
}
这是数组:
var locationOptions = ["? Head","? Chest","? Right Arm","? Left Arm","? Right Hand","✋ Left Hand","? Waist","? Right Leg","? Left Leg","? Right Foot","? Left Foot"]
locationIndex已成功上传到Cloud Firestore:
import SwiftUI
import Firebase
class InjuryViewModel: ObservableObject {
@Published var injury: Injury = Injury(id: "",userId: "",specificLocation: "",comment: "",active: false,injuryDate: Date(),exercises: "",locationIndex: 0)
private var db = Firestore.firestore()
func addInjury(injury: Injury) {
do{
var addedInjury = injury
addedInjury.userId = Auth.auth().currentUser?.uid
let _ = try db .collection("injuries").addDocument(from: addedInjury)
}
catch {
print(error)
}
}
func save () {
addInjury(injury: injury)
}
}
解决方法
Picker的选择和标识符必须为同一类型。所以你会有类似的东西
Picker(selection: $viewModel.injury.specificLocation,label: Text("General Location")) {
ForEach(locationOptions,id: \.self) {
Text($0)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。