2016-04-22 62 views
0

不能与雨燕2.2,版本的Xcode 7.3(7D175)雨燕 “守卫让” 解包失败

“锦衣卫让” 解包可选类型失败 "guard let" failed

但 “卫变种” 的作品 But "guard let" works

请帮忙! 这是怎么回事?

EDIT1

let localPresenter = presenter 
    let localDataSource = dataSource 
    let configurator: ViewControllerConfigurator = { inputView in 
     let a = inputView as? ChatTableViewController 
     guard var chatListController = a else { 
      throw ApplicationErrors.ModuleConfigureError.WrongViewInput 
     } 
     localPresenter.view = chatListController 
     chatListController.presenter = localPresenter 
     chatListController.tableView.dataSource = localDataSource 
    } 

EDIT2 此代码工作正常:

 let localPresenter = presenter 
     let localDataSource = dataSource 
     let configurator: ViewControllerConfigurator = { inputView in 
      let a = inputView as? ChatTableViewController 
      if let chatListController = a { 
       localPresenter.view = chatListController 
       chatListController.presenter = localPresenter 
       chatListController.tableView.dataSource = localDataSource 
      } else { 
       throw ApplicationErrors.ModuleConfigureError.WrongViewInput 
      } 
     } 
+2

请还包括你的代码**作为文本**(使用[编辑]按钮)。 – Moritz

+0

对不起,我无法创建一个简单的示例项目。 – adnako

+0

@EricD谢谢,我知道,但问题不在于断点。我无法弄清楚为什么卫兵很好地解开变量,但它不能解开一个常量? – adnako

回答

0

看起来它是在LLDB的错误。 如果我设置断点与“后卫”行了,然后“锦衣卫”失败: enter image description here

但如果我提出这个断点过去保护块的代码工作正常: enter image description here

+0

这不是一个错误,它是如何工作的。 :)断点是一个障碍,一个停止标志:执行运行*直到它遇到断点*所以如果你把stop *放在一行上,应用程序会在这行之前暂停*。 – Moritz

+0

我很抱歉,但为什么它以这种方式工作,当我设置断点代码失败?读什么关于他的行为?我知道过去的断点是IRQ在指令上停止CPU,但看起来像是在这里发生了一些寄存器值,因此代码工作不正确。不是吗? – adnako

+0

在物理学中它被称为“观察者效应”。 – adnako