Natknąłem się na ten problem wkrótce po uaktualnieniu do Xcode 10, ale to nie był problem.
Próbowałem zmienić system kompilacji, ale to dało mi osobny błąd, który oznaczał to samo. Mówiąc ogólnie: „Nie można znaleźć pliku X”.
Istnieje wiele rzeczy do sprawdzenia, gdy nie można znaleźć pliku.
- Odzyskane pliki referencyjne Folder Apple robi to przyjemne, gdy wykryje odniesienie do pliku, który nie istnieje, doda je do grupy o nazwie „Odzyskane odniesienia”
To miło ze strony Apple, ale nie zawsze działa.
Fazy kompilacji Źródła kompilacji Na tej liście mogą znajdować się metadane dla pliku, który projekt ma skompilować, ale plik w rzeczywistości nie istnieje i próbuje znaleźć plik w podanej ścieżce. Na tej liście zostanie wyszarzona, usuń je i ponownie dodaj, przełączając docelowe zależności pliku lub ręcznie usuwając go i przeciągając.
Ścieżka do pliku Sprawdź dwukrotnie ścieżkę do pliku, do którego jest drukowany błąd, oraz ścieżkę do pliku w wyszukiwarce. Możesz to łatwo zobaczyć, klikając plik w Xcode i zaznaczając zakładkę „Pokaż inspektora plików” (zakładka znajdująca się najbardziej po lewej stronie). Jeśli te ścieżki są poprawne, to jesteś dobry!
Przyciemnione pliki w twoim projekcie, które nie są w odzyskanych odniesieniach ani na czerwono Ten wkurzył mnie, ponieważ nie jest oczywiste, co się stało, ale w zasadzie, jeśli wejdziesz do wyszukiwarki i przeniesiesz plik w inne miejsce bez aktualizacji odniesienia w projekcie zgłosi błąd, ponieważ plik już tam nie istnieje. Jedyną wskazówką, jaką znalazłem, jest to, że plik w zakładce "Project Navigator" (skrajna lewa zakładka) jest nieznacznie przyciemniony, ale kiedy idziesz do usunięcia tego pliku Xcode nie monituje o usunięcie odniesienia lub wysłanie do śmieci. Możesz to naprawić, usuwając plik i dodając go ponownie do projektu lub przechodząc do zakładki „File Inspector” i klikając ikonę folderu obok ścieżki i zmieniając ją w odpowiednią lokalizację.
Tak czy inaczej, błąd wskazuje, że nie może znaleźć pliku, przejście na stary system kompilacji jest rozwiązaniem bardziej konkretnym. Jako programiści rozumiemy, że kompilator chce tylko, aby artefakt był wymieniony na końcu ścieżki pliku. Gdzieś ścieżka nie jest poprawna! Musimy się dowiedzieć, gdzie to jest!
Mój problem został rozwiązany z punktem 4 wymienionym powyżej. Mam nadzieję, że to komuś pomoże.