Pytanie Uzyskiwanie "file not found" w nagłówku Bridging podczas importowania frameworków Objective-C do projektu Swift


Mam projekt Swift, do którego próbuję zaimportować frameworki oparte na ObjC. Struktura znajduje się w katalogu pod ścieżką projektu i jest przywoływana przez projekt w Xcode. Jest także dodany do "Link Binary with Libraries" na stronie "Build Phases" projektu.

Jednak z jakiegoś powodu nie mogę umieścić ram w pliku nagłówka Bridging-Header. Pojawia się następujący błąd:

BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
        ^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'

Rzeczy, które sprawdziłem:

  1. "Nagłówek zgodności instalacji C" jest ustawiony na "TAK".
  2. Ścieżki wyszukiwania nagłówków zawierają ścieżkę do frameworków.

Jestem pewna, że ​​czegoś mi brakuje, więc jeśli ktoś ma jakieś wskazówki, to byłoby wspaniale.


76
2017-12-16 01:23


pochodzenie


Zapomniałem wstawić ścieżkę do biblioteki Header Search Paths, w tym przypadku pomógł pytanie: D - Aishwat Singh


Odpowiedzi:


Znaleziono rozwiązanie:

  • "Nagłówek Bridging Objective-C" (aka SWIFT_OBJC_BRIDGING_HEADER) musi być ustawiony na poziomie Docelowy, a NIE na poziomie Projektu. Pamiętaj, aby usunąć wartość ustawienia na poziomie projektu.

(dla mnie wygląda na błąd Xcode, ponieważ nie wiem, dlaczego to naprawia).


64
2018-01-18 06:26



To naprawdę dziwne, miałem ten sam błąd i okazało się, że miałem nagłówek zdefiniowany na poziomie Projektu. Mimo że już zdefiniowałem to na poziomie celu, musiałem usunąć go z poziomu projektu, aby umożliwić dodawanie zewnętrznych frameworków. Wyzywająco wygląda na to, że jest to błąd Xcode. - Jojodmo
Zrobiłem to, ale tutaj nie działało. Korzystanie z xcode 6.2. - Marco Almeida
@MarcoAlmeida, jeśli masz cel testów, spróbuj również usunąć "Nagłówek pomostowy Objective-C". To powinno pomóc. - Davlat Mirmanov
Nie do wiary. Dziękuję Ci. - Darren
No hej! Mają ten sam problem tutaj :( Chociaż nie został rozwiązany za pomocą opisanej powyżej metody ... - Michael K


Mam ten sam problem. Zmieniłem wszystkie moje przywozy z #import "HMSegmentedControl.h" do #import <HMSegmentedControl/HMSegmentedControl.h> na przykład.


51
2018-02-12 11:13



Nie działa dla mnie - Hernan Arber
Dzięki. To zadziałało dla mnie. :) - Muhammad Ibrahim
Aby pracować z cocoapodami, jest to konieczne. W nagłówku Bridging nigdy nie importuj kapsuły jako #import "abc.h" user #import <abc / abc.h> Kciuki w górę. - NaXir
Jesteś bogiem! Dziękuję za to. - Alper
Wielkie dzięki to zadziałało !! - Venu Gopal Tewari


Musiałem dodać moje lib katalog w Ścieżkach wyszukiwania nagłówka użytkownika:

test target settings - user header search path

W moim przypadku lib katalog zawiera .a-bramowy plik i niektóre pliki nagłówkowe. Są one zawarte w pomostowym pliku nagłówkowym. Jednak szybki kompilator ich nie znajdzie. Tylko kiedy dodałem ${PROJECT_DIR}/lib do ścieżki wyszukiwania nagłówka użytkownika zbudował cel testowy.

(Używam Xcode 6.2 na Mavericks 10.9.5)


21
2018-04-27 18:02



Mogłabym rozwiązać ten problem, dodając znaki Pods / * do ścieżek wyszukiwania nagłówka głównego celu. Co ciekawe, nie miałem tego problemu przed dodaniem frameworków Swift jako zależności do mojego celu. Xcode 7 beta 6. - bizz84
Właśnie to dla mnie działało. Mam ramy zawarte w moim projekcie, który zawiera bibliotekę (.a). Musiałem stworzyć ścieżkę wyszukiwania do nagłówków biblioteki w ścieżkach wyszukiwania nagłówka użytkownika. - Chris Livdahl
Musiałem również importować folder Pods / biblioteki, dziękuję bardzo! - thibaut noah


Napotkaliśmy ten sam komunikat o błędzie, z zupełnie inną przyczyną.

Ustawiać:

  • Cel aplikacji, cały kod Obj-C
  • Cel testu jednostkowego z pojedynczym szybkim przypadkiem testowym i nagłówkiem pomostowym odnoszącym się do kodu aplikacji

Kiedy dodaliśmy drugi przypadek testowy, po wyczyszczeniu (lub na drukarce partnera zespołu), zobaczyliśmy ten błąd podczas budowania celu testu jednostkowego.

Zostało to naprawione przez dodanie obojętnej klasy Obj-C do celu testu jednostkowego.


18
2018-03-06 23:30



Dziękuję Ci. To absolutnie działało, mimo że absolutnie nie ma sensu. - Curtis Steckel
Wówczas udało mi się usunąć obojętną klasę Obj-C. Domyślam się, że efektem ubocznym tego rozwiązania jest utworzenie nagłówka mostu specyficznego dla testu, który z kolei (podejrzewam) powoduje, że Xcode ignoruje nagłówek mostu aplikacji hosta. - clozach
Dodatek do powyższego: po wykonaniu czystej kompilacji, podczas kompilacji zacząłem otrzymywać błąd segmentacji 11. Po pewnym okresie prób i błędów okazuje się, że plik obojętny .m musi być obecny, ale jest mogą być pustym. Szaleństwo. - clozach
Dodanie obojętnej klasy objc do mojego celu testowego, naprawiłem ją dla mnie! - neoneye


To jakoś mi się udało:

  • Wyczyść projekt
  • Wyczyść folder kompilacji
  • Uruchom ponownie Xcode

4
2017-08-04 15:11



Przyjdź z ogólnymi odpowiedziami, które nie trafiają i nie próbuj sztuczek. - Nico
Ta sztuczka polegająca na trafieniu i próbie wymaga bardzo mniej wysiłku, więc nie powinno ci się przykro, gdy myślisz o innych rozwiązaniach. ;) - Hlung


Cóż, jest to trochę dziwne, ale domyślam się, że musisz dodać zasób do fazy "Copy Bundle Resources" twojego celu testowego, aby załadować wszystkie nagłówki z głównego celu aplikacji. W moim przypadku dodałem main.storyboard i zadbał o błąd.

enter image description here


3
2018-04-28 16:20



Bez pomysłu, ale zadziałało to dla mnie. - YSR fan
Storyboard ???? Jak to jest związane z nagłówkiem pomostowym ... - Alix


Ten błąd pojawił się podczas instalowania za pomocą Cocoapods biblioteki CocoaImageHashing. Problem polegał na tym, że ścieżki wyszukiwania były błędne. Tak więc na poziomie Docelowy, w Ustawieniach kompilacji -> Ścieżkach wyszukiwania -> Ścieżkach wyszukiwania nagłówków ścieżki odpowiadały nieistniejącym folderom, na przykład "$ {PODS_ROOT} / Nagłówki / Publiczne / CocoaImageHashing", gdy struktura folderów Nagłówki / Publiczne / nie istniała. Dodałem ścieżkę $ {PODS_ROOT} / CocoaImageHashing i błąd zniknął.


3
2018-02-23 11:09