将 Xcode 12.4 升级到 13.3.1 后数据未正确保存

Data not saving correctly after upgrading Xcode 12.4 to 13.3.1

我正在开发一个使用 Xcode 12.4 的应用程序,它保存正确。现在我有了一台新电脑并升级到 Xcode 13.3.1 当我输入“123456”时它保存为“12345”如果我输入“1234567”然后在保存之前删除“7”它保存为“ 12345”。如果我输入“12345”或“1234567”然后点击保存,它就可以正常工作。

我不知道代码的哪一部分可能导致此问题或需要包含哪些其他信息。

我认为这是一个 Xcode 问题,而不是我的代码的问题。

我在保存按钮上有一个打印语句,但当时的代码是错误的。 “123456”打印为“12345”

struct AddTripView: View {
    @Environment(\.presentationMode) var presentationMode
    @StateObject private var addTripViewModel: AddTripViewModel
    
    init(repo: RepositoryProtocol) {
        _addTripViewModel = StateObject<AddTripViewModel>.init(wrappedValue: AddTripViewModel(repo: repo))
    }
    
    var body: some View {
        Form {
            HStack {
                Text("BOL:").fontWeight(.bold)
                TextField("BOL", text: $addTripViewModel.bol).keyboardType(.numberPad)
            }
        }
        .toolbar {
            ToolbarItemGroup(placement: .navigationBarTrailing) {
                Button {
                    addTripViewModel.addTrip()
                    print("AddView \(addTripViewModel.bol)")
                    presentationMode.wrappedValue.dismiss()
                } label: {
                    Text("Save")
                }
            }
        }
    }
}
class AddTripViewModel: ObservableObject {
    private let repo: RepositoryProtocol
    @Published var saved: Bool = false
    
    var bol: String = ""
    
    init(repo: RepositoryProtocol) {
        self.repo = repo
    }
    
    func addTrip() {
        let trip = Trip(uid: "",
                        bol: bol)
        
        repo.addTrip(trip: trip) { result in
            switch result {
            case .success(let savedTrip):
                DispatchQueue.main.async {
                    self.saved = savedTrip == nil ? false : true
                }
            case .failure(let error):
                print(error.localizedDescription)
            }
        }
    }
}
class FirebaseRepository: RepositoryProtocol {
    private let db = Firestore.firestore()
    
    func getAllTrips(completion: @escaping (Result<[Trip]?, Error>) -> Void) {
        let userId = Auth.auth().currentUser?.uid
        
        db.collection("trips")
            .whereField("userId", isEqualTo: userId!)
            .getDocuments { snapshot, error in
                guard let snapshot = snapshot, error == nil else {
                    completion(.failure(error ?? NSError(domain: "snapshot is nil", code: 107, userInfo: nil)))
                    return
                }
                let trips: [Trip]? = snapshot.documents.compactMap { doc in
                    var trip = try? doc.data(as: Trip.self)
                    if trip != nil {
                        trip!.id = doc.documentID
                    }
                    return trip
                }
                completion(.success(trips))
            }
    }
    
    func addTrip(trip: Trip, completion: @escaping (Result<Trip?, Error>) -> Void) {
        do {
            var addedTrip = trip
            addedTrip.userId = Auth.auth().currentUser?.uid
            
            let reference = db.collection("trips").document()
            let uid = reference.documentID
            addedTrip.uid = uid
            try reference.setData(from: addedTrip)
        } catch {
            fatalError("Unable to encode trip: \(error.localizedDescription)")
        }
    }
}

改变

var bol: String = ""

@Published var bol: String = ""