2015-12-30 14 views
5

Moja szybka aplikacja zachowuje rzuca pewne fatalne błędy:Swift utrzymuje rzucanie błędy, nie może dowiedzieć się, dlaczego

fatal error: unexpectedly found nil while unwrapping an Optional value 

Jedynym problemem jest to, że nie może wydawać się, aby dowiedzieć się, co wiersz kodu powoduje ten błąd. Czy istnieje sposób, aby zobaczyć linię kodu, która powoduje ten błąd?

Projekt jest zbyt duży, aby go tutaj przesłać, więc to jest jedyne, co mogę zrobić.

poważaniem, Luca Panjer

+0

Może spróbuj ponownie uruchomić kod xcode. Biorąc to pod uwagę, unikaj niebezpiecznego rozpakowywania. Zawsze używaj 'if let myVar = myVar {..}' lub 'myVar? .myProp'. – tskulbru

+0

Dzięki, ale już próbowałem. @tskulbru –

+0

@PhillipMills Awaria (EXC_BAD_ACCESS) nie jest wyjątkiem. –

Odpowiedz

2

Xcode powinien zatrzymać aplikację i wyświetlić linię przestępstwa w edytorze z błędem EXC_BAD_ACCESS. Komentarz o ponownym uruchomieniu Xcode jest prawdopodobnie najlepszym pierwszym krokiem do rozwiązywania problemów, ponieważ takie zachowanie powinno nastąpić bez względu na to, czy ustawiłeś punkt przerwania wyjątku (ponieważ jest to fatalny, awaryjny błąd, a nie wyjątek). Możesz także całkowicie zrestartować komputer Mac. Miałem sytuacje, w których Xcode po prostu nie zachowywał się poprawnie, dopóki całkowicie nie uruchomiłem komputera Mac.

+0

Spróbuję zrestartować mój macbook. Xcode dostarcza mi linię, to ta: 0x1002a476c <+44>: brk # 0x1 –

+0

Wygląda na to, że Xcode ma zły dzień. Wygląda na to, że interfejs nie odzwierciedla informacji, jakie otrzymuje. Jeśli ponowne uruchomienie komputera Mac nie pomoże, niektóre inne sugestie będą następujące: 1) Wyczyść, następnie przebuduj projekt i spróbuj ponownie (używając polecenia Wyczyść); i 2) ponownie zainstalować Xcode (ból w dupie, ale może być konieczne). –

+0

Właśnie przywróciłem mój macbook, to nie pomaga. Sprzątnę to. EDYCJA: Czyszczenie też nie pomaga. W tej chwili ponownie instaluję xCode. –

0

Jeśli otrzymujesz ten błąd ...

unexpectedly found nil while unwrapping an Optional value 

... potem gdzieś w kodzie jesteś siły odwijania wartość Optional korzystając !. Nie ma prawie żadnego innego powodu, dla którego ten komunikat o błędzie zostałby przedstawiony.

Jedną z typowych przyczyn tego błędu jest @IBOutlet, który jest zadeklarowany jako !, ale nie jest poprawnie podłączony w Konstruktorze interfejsu. Odłączę i ponownie podłączę wszystkie @IBOutlet s do twojego projektu, aby upewnić się, że są one poprawnie podłączone.

Poza tym, przejść przez każdą linię kodu, gdzie użyć do ! zmusić-unwrap coś i albo rozpakować go ręcznie za pomocą if let lub guard let lub przynajmniej ustawić punkt przerwania, dzięki czemu można zawęzić, które siły rozpakowany opcjonalny powoduje błąd.

Istnieje powód, dla którego ! jest czasami określany jako "bang!" Powoduje to wybuchy rzeczy. I bóle głowy. Mnóstwo bólów głowy.

+0

Niekoniecznie ... może to być spowodowane odniesieniem do gniazdka, które nie zostało jeszcze podłączone. Nie "!" wymagany. –

+0

Gniazdko, które nie zostało jeszcze podłączone, jest opcjonalne, które prawie zawsze ma znak!. Jak w '@IBOutlet var label: UILabel!'. W rzeczywistości musi być oznaczony symbolem? lub! ponieważ nie została zainicjowana w momencie jej zadeklarowania. Jeśli został on oznaczony? musielibyśmy go jawnie rozpakować, a kompilator nie znalazłby się nieoczekiwanie (chyba że później wymusisz to później!). –

+0

Wystarczająco uczciwe. Mój błąd. –

Powiązane problemy