【问题标题】:Problem fetching data with Firestone in swift/swiftui on Xcode 14 - iOS 16在 Xcode 14 上的 swift/swiftui 中使用 Firestone 获取数据时出现问题 - iOS 16
【发布时间】:2022-09-23 19:28:04
【问题描述】:

我在使用 Firebase 在 Swift/Swiftui 中获取 iOS 16 上的数据时遇到问题。当我单击按钮打开视图时,数据不会出现,直到我必须向下滑动并重新打开视图。它在 iOS 15 上运行良好,但在 iOS 16 上运行良好。感谢您的帮助。我还录制了一个视频来解释这个问题。这是我的代码:

获取数据的函数:

func QueryOrder() {
    var query: Query!
    let uid = Auth.auth().currentUser!.uid
    query = dataBase.collection(\"Users\").whereField(\"uid\", isEqualTo: uid)
    query.addSnapshotListener { (QuerySnapshot, error) in
        guard let documents = QuerySnapshot?.documents else {
            print(\"no document\")
            return
        }
            self.orders = documents.map { (QueryDocumentSnapshot) -> Order_placed in
                let data = QueryDocumentSnapshot.data()
                let customer_name = data[\"customer_name\"] as? String ?? \"\"
                let total = data[\"total\"] as? Double ?? 0
                let order_id = data[\"order_id\"] as? String ?? \"\"
                let code_for_delivery = data[\"code_for_delivery\"] as? String ?? \"\"
                let customer_address = data[\"customer_address\"] as? String ?? \"\"
                let customer_unit_type = data[\"customer_unit_type\"] as? String ?? \"\"
                let customer_phone_number = data[\"customer_phone_number\"] as? Int ?? 0
                let store_name = data[\"store_name\"] as? String ?? \"\"
                let order_status = data[\"order_status\"] as? String ?? \"\"
                return Order_placed(customer_name: customer_name, total: total, store_name: store_name, customer_address: customer_address, customer_phone_number: customer_phone_number, customer_unit_type: customer_unit_type, code_for_delivery: code_for_delivery, order_id: order_id, status: order_status)
        }
    }
}

这是我的看法:

ScrollView {
        
        
        LazyVGrid(columns: items, spacing: 10) {
            ForEach(StoreFirebase.orders) { item in
            
                currentOrdersViewModel(item: item, showCard: $showCard, orderID: $orderID)
            
            }
        }
        .navigationBarItems(trailing:
            Button (action: {
            self.presentationMode.wrappedValue.dismiss()
        }){
            ZStack {
                Circle()
                    .fill(Color(white: colorScheme == .dark ? 0.19 : 0.93))
                Image(systemName: \"xmark\")
                    .resizable()
                    .scaledToFit()
                    .font(Font.body.weight(.bold))
                    .scaleEffect(0.416)
                    .foregroundColor(Color(white: colorScheme == .dark ? 0.62 : 0.51))
                    }
        }.frame(width: 40, height: 40)
            
        )
        
        
    }
    .onAppear() {
        self.StoreFirebase.QueryOrder()
    
    }

这是视图模型的一部分:

@ObservedObject private var StoreFirebase = FirebaseViewModel()
var item: Order_placed
@State var ismodal = false
@State var color = \"\"
@Binding var showCard: Bool
@Binding var orderID: String

var body: some View {
    
    let doubleStr = String(format: \"%.2f\", item.total)
    
    ZStack {
        Rectangle()
            .foregroundColor(Color(red: 248 / 255, green: 248 / 255, blue: 255 / 255))
            .cornerRadius(10)
            .frame(minHeight: 50)  // ,maxHeight: 240)
        
        if item.status == \"Canceled\" {
            Text(\"Status: \\(item.status)\")
                .foregroundColor(Color.white)
                .font(Font.system(.footnote, design: .default).weight(.semibold))
                .padding(5)
                .padding(.horizontal, 2)
                .background(RoundedRectangle(cornerRadius: 14, style: .continuous)
                    .foregroundColor(Color.red.opacity(0.80))
                    .opacity(1), alignment: .center)
                .position(x: 200, y: 0)
                Spacer(minLength: 0)
        } else {
        Text(\"Status: \\(item.status)\")
            .foregroundColor(Color.white)
            .font(Font.system(.footnote, design: .default).weight(.semibold))
            .padding(5)
            .padding(.horizontal, 2)
            .background(RoundedRectangle(cornerRadius: 14, style: .continuous)
                .foregroundColor(Color.blue.opacity(0.80))
                .opacity(0.55), alignment: .center)
            .position(x: 200, y: 0)
            Spacer(minLength: 0)
        }
        
        
        
    VStack (spacing: 10) {
            
            HStack {
            Text(\"Order ID :\")
                    .font(.system(size: 15, weight: .heavy))
                 Spacer(minLength: 0)
                Text(item.order_id)
                    .font(.system(size: 15, design: .monospaced))
            }.padding()
            
            HStack {
                Text(\"Code to give to your courier :\")
                        .font(.system(size: 15, weight: .heavy))
                     Spacer(minLength: 0)
                if item.status != \"Courier is arrive\" {
                    Text(item.code_for_delivery)
                        .font(.system(size: 15, design: .monospaced))
                        .blur(radius: 5)
                } else {
                    Text(item.code_for_delivery)
                        .font(.system(size: 15, design: .monospaced))
                }
            }.padding()
        
            HStack {
                Text(\"Need help with this order?\")
                    .font(.system(size: 15, weight: .heavy))
                    Spacer(minLength: 0)
                Button(action: {
                  //  sendMessage()
                    self.orderID = item.order_id
                    self.showCard = true
                })
                {
                        Text(\"Contact support\")
                        .font(.system(size: 16, weight: .semibold))
                        .foregroundColor(.red)
                    }

如果您想查看问题,这是视频的链接(无需下载的保管箱链接)

Video

非常感谢您的帮助,我试图了解问题出在哪里,但我仍然不知道它在 iOS 15 上运行良好。

    标签: swift firebase google-cloud-firestore swiftui ios16


    【解决方案1】:

    我在 iOS 16 设备中遇到了同样的问题,但在 iOS 15 和 iOS 16 模拟器中运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2021-02-05
      • 2022-12-27
      • 1970-01-01
      • 2022-11-10
      • 2022-11-30
      • 2023-03-29
      相关资源
      最近更新 更多