2016-04-22 9 views
0
fehlgeschlagen

kann nicht optional Typ auszupacken mit Swift 2.2, Xcode Version 7.3 (7D175)Swift "Wache lassen" auszupacken

fehlgeschlagen "Wächter lassen" "guard let" failed

Aber "guard var" arbeitet But "guard let" works

Bitte, helfen! Was ist hier los?

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 Dieser Code funktioniert:

 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

Bitte auch Ihren Code ** als Text ** (benutze den [Bearbeiten] Knopf). – Moritz

+0

Es tut mir leid, ich kann kein einfaches Beispielprojekt erstellen. – adnako

+0

@EricD Danke, ich weiß es, aber das Problem ist nicht über die Haltepunkte. Ich kann nicht herausfinden, warum Wache die Variable gut auspackt, aber sie kann eine Konstante nicht auspacken? – adnako

Antwort

0

Sieht aus wie es ein Fehler in LLDB ist. Wenn ich einen Haltepunkt in der Zeile mit „Wache“, dann „guard“ nicht gesetzt: enter image description here

Aber wenn ich diesen Haltepunkt vorbei an der Wache Block bewegen fein der Code funktioniert: enter image description here

+0

Es ist kein Fehler, es funktioniert so. :) Der Breakpoint ist eine Barriere, ein Stoppschild: Die Ausführung läuft * bis sie auf den Breakpoint * trifft. Wenn Sie also den Stop * auf * eine Zeile setzen, pausiert die App * kurz vor dieser Zeile *. – Moritz

+0

Es tut mir leid, aber warum funktioniert es so, dass der Code fehlschlägt, wenn ich einen Haltepunkt einstelle? Was kann man über sein Verhalten lesen? Ich weiß, dass der Haltepunkt weit zurück in der Vergangenheit ein IRQ war, um eine CPU auf einer Anweisung zu stoppen, aber es sieht so aus, als wäre hier etwas mit Registerwerten passiert, daher funktioniert der Code falsch. Ist es nicht? – adnako

+0

In der Physik heißt es "Beobachter-Effekt". – adnako

Verwandte Themen