SIGABRT:前提条件失败:导入的节点在读取其值之前已删除

时间:2019-08-01 07:34:55

标签: ios swift swiftui

beta 5的{​​{1}}发布以来,我不得不更新代码。你知道该怎么做。但是,这种怪异的运行时错误仍在更改中幸免,我无法弄清为什么会发生。

我开始尝试将其纳入原始代码中,但令人惊讶的是,它也发生在我设法提出的最简单的测试项目中:带有表的TabView。

在运行时更改为另一个选项卡时,使Xs模拟器因SIGABRT而崩溃的过程:

  

“ xxxxxxx [23089:4642999]前提条件失败:导入的节点已删除   读取其值之前:90“

如果用户连续单击进入detailview,它不会崩溃;只需运行该应用程序,然后按第二个选项卡即可。

我修改了视图的构建,对象……什么也没有。将行视图更改为简单的文本时,它甚至崩溃。我还删除了@Binding等,以排除Combine。

请让我知道你们中是否有人看到东西。它只会在Beta 5中崩溃,而不会在Beta 2中崩溃。

Xcode 11

6 个答案:

答案 0 :(得分:3)

我在Xcode 11.0(11A420a)上仍然存在此问题。仅当在动态列表中使用NavigationLink时,才会发生崩溃。对我来说,唯一的解决方法是在List内使用ForEach,如下所示:

SQL> with fpm_cb_bill_Details (bill_id, bill_status_cd) as
  2    (select 100, 'status A' from dual union all
  3     select 101, 'status B' from dual union all
  4     select 102, 'statuc C' from dual union all
  5     select 103, 'status D' from dual
  6    )
  7  select a.bill_id         curr_bill_id,
  8         a.bill_status_cd  curr_status,
  9         b.bill_id         prev_bill_id,
 10         b.bill_status_cd  prev_status
 11  from fpm_cb_bill_details a join fpm_cb_bill_details b on b.bill_id = a.bill_id - 1
 12  where a.bill_id = (select max(bill_id) from fpm_cb_bill_details);

CURR_BILL_ID CURR_STA PREV_BILL_ID PREV_STA
------------ -------- ------------ --------
         103 status D          102 statuc C

SQL>

答案 1 :(得分:2)

Xcode Beta 5在质量方面确实倒退了一步。我的项目完全坏了。首先,Shape崩溃以及Tab和List视图的已知问题。

我有以下不再起作用的代码。选择“秒”标签时会崩溃:

struct WorkoutList: View {
    var workoutCollection: WorkoutCollection

    var body: some View {
        NavigationView {
            List(workoutCollection.workouts) { workout in
                NavigationLink(destination: WorkoutDetail(workout: workout)) {
                    WorkoutRow(workout: workout)
                }.accessibility(identifier: "workout")
            }.accessibility(identifier: "workoutList").navigationBarTitle(Text("workouts.title"))
        }
    }
}

将动态列表替换为静态列表时,它不会出现任何问题:

struct WorkoutList: View {
    var workoutCollection: WorkoutCollection

    var body: some View {
        NavigationView {
            List() {
                NavigationLink(destination: WorkoutDetail(workout: workoutCollection.workout[0])) {
                    WorkoutRow(workout: workoutCollection.workout[0])
                }.accessibility(identifier: "workout")
            }.accessibility(identifier: "workoutList").navigationBarTitle(Text("workouts.title"))
        }
    }
}

我认为我们必须等待Beta 6。

答案 2 :(得分:2)

使用Xcode Beta 6(昨天发布),我的TabView再次正常工作。不再有SIGABRT错误。所以,该升级了!

答案 3 :(得分:0)

我有一个TabView,每个标签内都有一个列表,我的应用程序现在完全坏了。取消引用List组件似乎有麻烦。我们将不得不等待,但是我希望能够很快发布此修补程序。

答案 4 :(得分:0)

这里的情况类似。但是,我没有使用列表,而是使用Form,并且当我从该选项卡点击到任何其他选项卡时,似乎会导致此错误,反之亦然。奇怪的东西。

答案 5 :(得分:0)

我在Xcode 11 GM上仍然有此问题... 我有三个选项卡,里面都有列表,每当在滚动当前视图时更改选项卡,都会发生SIGBART崩溃。