繁体   English   中英

在 Xcode 14 - iOS 16 上的 swift/swiftui 中使用 Firestone 获取数据时出现问题

[英]Problem fetching data with Firestone in swift/swiftui on Xcode 14 - iOS 16

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

Function 获取数据:

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()
    
    }

这是视图 Model 的一部分:

@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)
                    }

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

视频

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM