Swift UIAlert不再打开,Xcode告诉我调试NSLayoutConstraintToNilAnchor

Swift UIAlert不再打开,Xcode告诉我调试NSLayoutConstraintToNilAnchor,swift,xcode,layout,Swift,Xcode,Layout,如果不更改视图控制器中的任何内容或更新到新的Xcode版本,显示UIAlertController将不再有效 Xcode向我提供了错误消息: 将约束工厂方法传递给nil布局锚。这是不允许的,并且可能导致混乱的异常。在BOOL\u NSLAYOUTSCONSTRAINTONILANCHORVOID上中断以进行调试。这将只记录一次。这可能会在将来打破 现在,我成功地尝试使用错误消息中给出的断点调试它 这就是我得到的: Foundation`_NSLayoutConstraintToNilAnchor

如果不更改视图控制器中的任何内容或更新到新的Xcode版本,显示UIAlertController将不再有效

Xcode向我提供了错误消息: 将约束工厂方法传递给nil布局锚。这是不允许的,并且可能导致混乱的异常。在BOOL\u NSLAYOUTSCONSTRAINTONILANCHORVOID上中断以进行调试。这将只记录一次。这可能会在将来打破

现在,我成功地尝试使用错误消息中给出的断点调试它

这就是我得到的:

Foundation`_NSLayoutConstraintToNilAnchor:
->  0x1b51342ec <+0>:  pacibsp 
    0x1b51342f0 <+4>:  sub    sp, sp, #0x30             ; =0x30 
    0x1b51342f4 <+8>:  stp    x20, x19, [sp, #0x10]
    0x1b51342f8 <+12>: stp    x29, x30, [sp, #0x20]
    0x1b51342fc <+16>: add    x29, sp, #0x20            ; =0x20 
    0x1b5134300 <+20>: adrp   x19, 224497
    0x1b5134304 <+24>: ldrb   w8, [x19, #0xd30]
    0x1b5134308 <+28>: tbnz   w8, #0x0, 0x1b5134334     ; <+72>
    0x1b513430c <+32>: adrp   x8, 366
    0x1b5134310 <+36>: add    x8, x8, #0x30a            ; =0x30a 
    0x1b5134314 <+40>: adrp   x9, 196084
    0x1b5134318 <+44>: add    x9, x9, #0x2a8            ; =0x2a8 
    0x1b513431c <+48>: stp    x9, x8, [sp]
    0x1b5134320 <+52>: adrp   x0, 196084
    0x1b5134324 <+56>: add    x0, x0, #0x288            ; =0x288 
    0x1b5134328 <+60>: bl     0x1b5105f6c               ; NSLog
    0x1b513432c <+64>: orr    w8, wzr, #0x1
    0x1b5134330 <+68>: strb   w8, [x19, #0xd30]
    0x1b5134334 <+72>: ldp    x29, x30, [sp, #0x20]
    0x1b5134338 <+76>: ldp    x20, x19, [sp, #0x10]
    0x1b513433c <+80>: add    sp, sp, #0x30             ; =0x30 
    0x1b5134340 <+84>: retab  
断点在最后一行明显停止:

self.present(alert, animated: true)
可能是什么错误?

alert.setValuevc,forKey:contentViewController 这绝对不是一个公共api,可以在任何时候被破坏,例如现在。我建议不要使用它,因为它会导致应用程序从AppStore中删除。 我建议不要攻击UIAlertController,而是实现自己的弹出窗口或使用现有库

self.present(alert, animated: true)