我在我的应用程序中使用SwiftData,我有一个带有两个变量的Tracker模型:name类型StringtrackerType类型TrackerType,这是另一个模型.从Tracker中检索name数据运行良好,但try 读取trackerType会导致崩溃,并显示以下错误:

EXC_BREAKPOINT(代码=1,子代码=0x101e8303c).

下面是我的Tracker模型:

@Model
class Tracker {
    var name: String
    var trackerType: [TrackerType]

    init(name: String, trackerType: [TrackerType]) {
        self.name = name
        self.trackerType = trackerType
    }
}

@Model
class TrackerType {
    var type: String
    var status: Bool

    init(type: String, status: Bool) {
        self.type = type
        self.status = status
    }
}

And the crash result snippest: Crash

我不明白这可能是什么问题.我try 在我的应用程序中本地创建带有虚拟数据的模型.

推荐答案

在花了一整天的时间调查之后,我已经确定了错误的根本原因.

问题在于,如果不事先将模型数据保存在SwiftData容器中,则无法读取模型数据.因此,必要的步骤如下:

  • 避免直接使用本地创建的虚拟数据模型.
  • 最初,是save the data in the container.
  • 从容器中检索和使用数据.

因此,执行完这些步骤后,我的代码如下:

import SwiftUI
import SwiftData

struct DashboardView: View {
    @Environment(\.modelContext) private var modelContext
    @Query private var items: [TrackerItem]
    @AppStorage("DataSaved") private var isDummyDataSavedOnce = false

    var body: some View {
        NavigationStack {
            if isDummyDataSavedOnce, let item = items.first  {
                TrackerView(prayers: item.tracker)
            }
        }
        .onAppear {
            saveDummyData()
        }
    }

    private func saveDummyData() {
        if !isDummyDataSavedOnce {
            withAnimation {
                let newItem = TrackerDummyData.trackerItem
                modelContext.insert(newItem)
                isDummyDataSavedOnce.toggle()
            }
        }
    }
}

Ios相关问答推荐

如何加密字符串使用AES. GCM在Dart和解密相同的Swift?

SwiftUI.从自定义视图修改器访问自定义视图子视图

在SwiftUI中动态隐藏列表的空部分

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

用于HDR显示的CI上下文选项

如何在iOS 17 SwiftUI中获取用户名

磁盘上的Objective-C ISA指针与实例化对象时的比较

为什么IOS多行文本输入在React原生纸张对话框中无法正常工作?

使用 Xamarin 将 dext Bundle 到 iOS .ipa 中

Swift Vision库识别文本后如何将其赋值给 struct 体实例属性以供显示?

SwiftUI 每秒从 Timer 更新单个 @State 属性,每秒也重绘整个视图

发生异常:需要 issuerId

FileHandle 不会在 iOS 中释放内存

如何在 SwiftUI 的 TabView 中添加底部曲线?

如何包含 Xcode 子项目标头?

Swiftui为什么在点击第二行之前背景不起作用

.overlay 和 body 是什么 swift 概念

检测 iPhone 应用程序中是否存在摄像头?

用 NavigationViewController 快速呈现 ViewController

在 iOS 上没有显示数字键盘