SwitData 断点问题Thread 1: breakpoint 4.2 (1)
SwitData 断点问题Thread 1: breakpoint 4.2 (1)

SwitData 断点问题Thread 1: breakpoint 4.2 (1)

问题复现

在学习Swift@Relationship属性包装器的过程中,发现每次点击新增或删除按钮并触发addSample()和deleteSample()时都会报错,并且强退出应用。

代码如下:

func addSample() {
    // 创建新的 User 和 Job
    let user1 = User(name: "Piper Chapman", city: "New York", joinDate: .now)
    let job1 = Job(name: "Organize sock drawer", priority: 3)
    let job2 = Job(name: "Make plans with Alex", priority: 4)
    
    modelContext.insert(user1)
    
    user1.jobs.append(job1)
    user1.jobs.append(job2)
}

func deleteSample() {
    do {
        let users = try modelContext.fetch(FetchDescriptor<User>())
        for user in users {
            if user.name == "Piper Chapman" {
                modelContext.delete(user)
            }
        }
    } catch {
        print("报错了")
    }
}

这段代码之前是正常运行的,在写《SwiftData框架属性包装器@Relationship》一文时,写着写着就突然报错并且没有输出具体的报错代码。

此外,数据是可以正常插入到模拟器的数据库中,插入后直接卡死并报错。

这一问题在Xcode预览中没有复现,数据是正常插入和删除的。

后来排查判断可能是调试断点导致假性错误,调试断点有时会导致应用暂停,显示类似 0x102e9490c 的错误信息。这可能并非真正的崩溃,而是断点触发。

解决方案

在 Xcode 左侧的 断点导航器 中:

按下 Command + 8 打开断点导航器。

右键点击断点导航器中的所有断点,选择 Delete Breakpoint。

从这里可以看到Job.swift存在断点,可能是之前意外添加上去的,右击断点处点击删除。

删除断点后重新运行,问题得到解决。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注