2016-05-20 10 views
25

Ulepszyłem Firebase wczoraj, a teraz mam bardzo nietypowy problem. Po uruchomieniu symulatora pojawia się szybki błąd kompilacji "Błąd segmentacji: 11" Są to setki linii kodu opisujących błąd, ale one absolutnie nie są pomocne. Z błędu jedyne, co widzę, może dawać wskazówki, jest na dole. Jest napisane:Ulepszona baza Firebase - teraz otrzymuję błąd kompilacji Swift

1. While loading members for 'ProfileTableViewController' at <invalid loc> 
    2. While deserializing decl #101 (PATTERN_BINDING_DECL) 
    3. While deserializing decl #2 (VAR_DECL) 

Dziwnie, błędy, które wpisałem powyżej, nie są spójne. Wspomniany kontroler widoku obraca się między trzema kontrolerami widoku, w których używam Firebase.

Aby rozwiązać problem, skomentowałem cały kod w klasie ProfileTableViewController, ale nadal występuje błąd odwołujący się do tego kontrolera widoku. Jedyny kod działający w kontrolce widoku:

import UIKit 
    import Firebase 
    import FirebaseDatabase 

(Używam również FirebaseAuth w innych kontrolerach widoku).

Rozwiązaniem problemu jest "wyczyszczenie", ponowne uruchomienie xcode, ponowne oczyszczenie przy starcie, a następnie uruchomienie programu. Wszystko będzie działać poprawnie, chyba że wprowadzę jakiekolwiek zmiany w kodzie w programie. Nawet jeśli wszystko, co robię, to dodać komentarz, błąd pojawi się ponownie.

Nie chcę już zamykać kodu xcode i restartować za każdym razem, gdy piszę kilka linii kodu, i obawiam się, że napotkam problemy podczas przesyłania do sklepu z aplikacjami.

Używam XCode 7.3.1 i moim celem wdrożenia jest 9,3

Każdy wgląd można dać mile widziana! Dziękuję Ci!

+0

* kompilator * generuje "Błąd segmentacji: 11"? – luk2302

+0

Nawigator problemów wyświetla nazwę mojej aplikacji, a następnie menu rozwijane z informacją "Błąd kompilacji Swift" i menu rozwijane z napisem "Polecenie nie powiodło się z powodu sygnału: błąd segmentacji: 11" Kompilator wydaje się kompilować wszystkie kontrolery widoku a następnie pojawia się błąd, który zaczyna się od tego: MergeSwiftModule normal arm64 –

+0

Jestem w stanie odtworzyć błąd. Błąd jest tworzony za każdym razem, gdy próbuję odwołać się do bazy danych na dwóch różnych kontrolerach widoku. Deklaruję odniesienie w ProfileTableView Controller z "var ref: FIRDatabaseReference!" a następnie w metodzie viewWillAppear ustawiam odwołanie z ref = FIRDatabase.database(). reference() Błąd jest odtwarzany, gdy robię to samo w innym kontrolerem widoku. Jak tylko wspomniano dwa razy w programie, to błędy. –

Odpowiedz

20

Udało mi się to rozgryźć! Moje kapsułki z kakao nie były aktualne. Jak tylko wróciłem i zainstalowałem najnowsze kapsuły kakao w terminalu, a następnie zaktualizowałem plik podfile dla tej aplikacji, ten błąd zniknął.

Proces:

Otwórz zacisk

sudo gem install cocoapods 

(aktualizacja Cocoapods) W terminalu przejdź do folderu aplikacji, a następnie:

open -a xcode podfile 

razie potrzeby dokonać zmian w podfile. Nie musiałem wprowadzać żadnych zmian. Zapisz i wyjdź.

W terminalu

pod update 

otworzyć plik .xcworkspace i Ta da!

+0

Dziękuję bardzo! – justColbs

+0

Wielkie dzięki ... –

3

To jest/naprawdę doprowadzało mnie do szału.

Ten kod powoduje wspomnianą awarię:

func ref() -> FIRStorageReference { 
    return FIRStorage.storage().reference() 
} 

Jeżeli po prostu używać go w funkcji wszystko działa:

FIRStorage.storage().reference().dataWithMaxSize(... 

Zajęło godziny, aby dowiedzieć się tego. Komunikat o błędzie wskazuje gdzie indziej. To było chyba najbardziej frustrujące doświadczenie w debugowaniu w całej mojej karierze.

+0

lol ... tu kolego – Mehul

3

Od czasu do czasu również wyciągałem włosy z tego problemu. Próbowałem odpowiedzi Erica Duffetta, ale bez powodzenia.

Pomyślałem, że to był problem z FirebaseAuth. Co zrobiłem było tak:

  1. Usuń FirebaseAuth z Podfile
  2. pods Informacje o aktualizacji pod
  3. Pobierz Firebase ramami z their site (na dole)
  4. Śledź pliku README importować FirebaseAuth ręcznie w projekcie (trzeba zaimportować FirebaseAuth.framework i GoogleNetworkingUtilities.framework)
  5. Clean - Build i nie więcej błąd segmentacji 11 błąd

Mam nadzieję, że to pomoże komuś.

+0

Dziękuję, to była jedyna rzecz, która zadziałała dla mnie po tym, jak próbowałem zaktualizować CocoaPods i refaktoryzację. –

1

Usunięcie DerivedData i ModuleCache, a następnie Clean>Build dla mnie.

0

Wymyśliłem inne rozwiązanie, które sprawdziło się u mnie. Miałem kilka niestandardowych funkcji, które zwróciły zmienne specyficzne dla Firebase, takie jak FIRUser, do plików, które nie miały na górze ani jednego adresu. Lubię utrzymywać moje metody obsługi danych w oddzielnym pliku, dlatego właśnie zmieniłem funkcje, aby zamiast tego zwracały Strings, takie jak FIRUser.uid. W KOŃCU nareszcie pozbyłem się ostrzeżeń/awarii kompilatora na dobre.

0

Problem dla mnie wystąpił, gdy jawnie ustawiłem typy parametrów bloku uzupełniania dla setValue.

FIRDatabase.database().reference(withPath: "test").childByAutoId().setValue("test1") { (error: Error?, ref: FIRDatabaseReference) in } 

Wszystko działa bez zarzutu, gdy typy dla error i ref są usuwane.

3

W twoim podfile możesz spróbować odkomentować use_frameworks!

use_frameworks! 
pod 'Firebase' 
pod 'Firebase/Database' 
pod 'Firebase/Auth' 

Następnie uruchom "aktualizację pod" w terminalu. Zrestartuj swój projekt Xcode.

to zrobił to dla mnie po zmaga się przez dwa dni z winy segmentacji 11

+0

Dziękuję, to działa. – iParesh

1

Miałem też problem z Firebase.

Xcode skarży się na poszczególne klasy. Podobnie jak swojego „ProfileTableViewController” co zrobiłem, aby rozwiązać ten był: Komentarz wszystko Firebase związanych z importu w tej klasie -> Clean -> Kompilacja (Oczywiście mam pewne błędy) -> Odkomentuj -> Clean -> Budowa udało

Powiązane problemy