你好, 我正在开发一个 iOS 应用程序,在构建我的项目时,我遇到了以下错误消息: 错误:跟踪/BPT 陷阱:5
我没有在网上找到任何解决此问题的方法,所以我想知道这里是否有人可以提供帮助。 我也遇到了 Cocoapods 和我的 Silicon Mac 的问题,所以我想列出我尝试修复的步骤:
然后出现如下错误:
来自 Merge swiftmodule (x86_64) 的日志条目: https://pastebin.com/MiSKGxB7 (日志方式要长,超过字符限制)。
正如某处的错误所说,它是在尝试序列化 BaseViewModel 类时发生的,这是我编写的包含该类的 Base.swift 文件中的代码:
import SwiftUI
import Firebase
import FirebaseFirestore
import Combine
protocol BaseModel: Identifiable, Codable {
var id: String? { get set }
var collection: String { get }
init()
}
class BaseViewModel<T: BaseModel>: ObservableObject, Identifiable, Equatable {
@Published var model: T
var id: String {
didSet {
self.model.id = id
}
}
var cancellables = [AnyCancellable]()
private var db = Firestore.firestore()
required init(){
let model = T.init()
self.model = model
self.id = model.id ?? UUID().uuidString
}
required init(id: String) {
var model = T.init()
model.id = id
self.model = model
self.id = id
}
init(model: T) {
self.model = model
self.id = model.id ?? UUID().uuidString
}
static func ==(lhs: BaseViewModel<T>, rhs: BaseViewModel<T>) -> Bool {
lhs.model.id == rhs.model.id
}
func load(completion: @escaping (Bool) -> Void = {finished in}){
if let id = model.id {
self.id = id
db.collection(model.collection).document(id).getDocument { docSnapshot, error in
guard let doc = docSnapshot else {
print("Error fetching document: \(error!)")
return
}
do {
guard let data = try doc.data(as: T.self) else {
print("Document empty \(type(of: self.model)) with id \(id)")
return
}
self.model = data
self.loadSubData {finished in
if finished{
completion(true)
}
}
} catch {
print(error.localizedDescription)
}
}
}
}
func loadSubData(completion: @escaping(Bool) -> Void = {finished in}) {
fatalError("Must be overridden!")
}
func loadDataByIDs<T, S>(from list: [String], appender: @escaping (T) -> Void) where T: BaseViewModel<S>, S: BaseModel {
for id in list {
let viewModel = T.init(id: id)
viewModel.load{finished in
if finished {
appender(viewModel)
}
}
}
}
func save(){
do {
let _ = try db.collection(model.collection).addDocument(from: model)
} catch {
print(error)
}
}
func update(){
if let id = model.id {
do {
try db.collection(model.collection).document(id).setData(from: model)
} catch {
print(error.localizedDescription)
}
}
}
func delete(){
if let id = model.id {
db.collection(model.collection).document(id).delete() { error in
if let error = error {
print(error.localizedDescription)
}
}
}
}
}
答案 0 :(得分:0)
我遇到了同样的问题,更新 Quick/Nimble 后解决了。 我猜一些带有 x86 文件的 pod 项目需要更新以支持 M1
答案 1 :(得分:0)
作为记录,任何在 M1 上遇到这些奇怪错误的人都必须准确阅读 excode 编译错误。
如果他们说的是特定的类,则意味着 xcode 无法编译您的代码,您应该删除代码并尝试逐行编译。 我知道这很奇怪,看起来像编写 PHP 和刷新网页,但我确定这种类型的错误可能与平台迁移有关。
在我的情况下,我有一个很好的类,我开始重构,而不是 xcode 向我显示编译错误,它给出了这个神秘的 BPT5,在准确阅读 IDE 内部的描述时,我可以发现我的类是根本原因。
只需删除所有更改的代码,然后再次尝试编译...