Postępując zgodnie z instrukcjami, utworzyłem nagłówek pomostowy i dodałem do mojego projektu. Niestety wystąpił następujący błąd:
: 0: błąd: nie można zaimportować nagłówka Objective-C „--- ścieżka - do --- nagłówka / .... h”
W ustawieniach kompilacji dodałem ciąg ścieżki wyszukiwania nagłówka do lokalizacji nagłówka mostkowania, ale nic nie pomogło.
Czy ktoś doświadczył tego problemu?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
źródło
źródło
Odpowiedzi:
Uważaj, aby dodać plik do folderu, na który skarży się Twój błąd! Zrobiłem ten sam błąd, jeśli utworzysz plik z Xcode, przejdzie do folderu: Project-> Project-> Header.h
Xcode szuka Project-> Header.h
Oznacza to, że musisz umieścić plik w folderze projektu (ProjectName-> ProjectNameFolder)!
Mam nadzieję, że to pomoże;)
AKTUALIZACJA: Nie jestem pewien, czy rozumiem, co masz na myśli, ale spróbuj tego, aby rozwiązać problem:
1. Usuń wszystkie pliki mostów, które utworzyłeś do tej pory.
2. Wybierz główny folder projektu i kliknij nowy plik-> iOS-> Plik nagłówkowy.
3. Zapisz import w utworzonym pliku nagłówkowym.
4. Wybierz projekt w Xcode-> Ustawienia budowania, wpisz w polu wyszukiwania: mostkowanie i wpisz w klucz SWIFT_OBJC_BRIDGING_HEADER nazwę twojego pliku nagłówkowego lub ścieżkę do niego!
Jeśli wykonasz te kroki, plik nagłówkowy zostanie utworzony we właściwej lokalizacji!
: D Mam nadzieję, że to pomaga!
źródło
W moim przypadku był to właściwie błąd wynikający z cyklicznego odwołania. Miałem klasę zaimportowaną w nagłówku mostkowania, a plik nagłówkowy tej klasy importował szybki nagłówek (
<MODULE_NAME>-Swift.h
). Robiłem to, ponieważ w pliku nagłówkowym Obj-C musiałem użyć klasy zadeklarowanej w Swift, rozwiązaniem było po prostu użycie@class
deklaratywnej.Zasadniczo błąd brzmiał: „Nie udało się zaimportować nagłówka mostkowania”, błąd nad nim oznacza, że
<MODULE_NAME>-Swift.h
nie znaleziono pliku, powyżej był to błąd wskazujący na określony plik nagłówkowy Obj-C (mianowicie kontroler widoku).Po sprawdzeniu tego pliku zauważyłem, że w nagłówku jest zadeklarowany -Swift.h. Przeniesienie tego importu do implementacji rozwiązało problem. Musiałem więc użyć obiektu, nazwijmy go
MyObject
zdefiniowanym w Swift, więc po prostu zmieniłem nagłówek, aby powiedziećźródło
Znajdź ścieżkę pod adresem:
Ustawienia kompilacji / Swift Compiler - Generowanie kodu / Nagłówek Objective-C Bridging
i usuń ten plik. Wtedy powinno być dobrze.
źródło
Prawdopodobnie wpłynie to tylko na niewielki procent ludzi, ale w moim przypadku mój projekt wykorzystywał CocoaPods, a jeden z tych strąków miał specyfikację podrzędną z własnymi CocoaPods. Rozwiązaniem było użycie importu pełnego kąta w celu odniesienia się do dowolnych plików w pod-podach.
Zamiast
źródło
U mnie usunięcie danych pochodnych naprawiło to, zauważyłem, że nawet jeśli wyewidencjonuję ze starego zatwierdzenia, ten sam problem się dzieje.
Możesz dotrzeć do tej opcji poprzez Okno-> Projekty.
źródło
Dla mnie to dlatego, że zapomniałem dodać go do ustawień kompilacji celu.
źródło
„Musimy powiedzieć Xcode, gdzie szukać plików nagłówkowych, które wymieniamy w naszym nagłówku pomostowym . Znajdź sekcję Search Paths i zmień ustawienia na poziomie projektu dla User Header Search Paths , dodając rekursywny wpis dla„ Pods ” katalog: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
źródło
Doświadczyłem również tego problemu i niestety jest to tylko błąd w SDK + Xcode. Rozmawiałem z inżynierem z WWDC, o tym i kilku innych problemach, które miałem z CloudKit. Te błędy zostaną rozwiązane w następnym ziarnie Xcode.
To najfajniejsza część korzystania z oprogramowania w wersji beta.
źródło
dla innych, którzy mają problem z dodaniem klasy szybkiej do projektu celu-c. to działa dla mnie:
i to wszystko. teraz utwórz w swoim kodzie klasę swift, tak jakby była to funkcja-c.
źródło
Zaimportowałem niektóre pliki z plików nagłówkowych Bridgin z cocoapods w niewłaściwy sposób.
Zamiast importować
napisałem
I to był mój OGROMNY błąd
źródło
Dodaj tymczasowy plik Objective-C do swojego projektu. Możesz nadać mu dowolną nazwę.
Wybierz opcję Tak, aby skonfigurować nagłówek mostkowania Objective-C.
Usuń właśnie utworzony tymczasowy plik Objective-C.
W nowo utworzonym pliku ProjectName-Bridging-Header.h dodaj następujący wiersz:
„#import <GoogleMaps / GoogleMaps.h>”
Edytuj plik AppDelegate.swift:
Kliknij link, aby zobaczyć pełną próbkę
źródło
Dla mnie nie było to wybieranie opcji „Kopiuj elementy w razie potrzeby” w ścieżce docelowej podczas dodawania frameworka. Po prostu ponownie dodaj strukturę z wybraną tą opcją.
źródło
Po pierwszych kilku dniach zmagań w końcu udało mi się z powodzeniem zintegrować rejestrację na Facebooku z moją aplikacją na iOS. Oto kroki (zakładam, że zainstalowałeś już Facebook SDK v4.1 lub nowszy na swoich komputerach):
Dodaj informacje do pList, jak wspomniano tutaj
Zbuduj swoją aplikację. I wohoo! brak błędów czasu kompilacji.
źródło
Mam ten sam problem z innego powodu, oto mój przypadek , w którym buduję projekt, który wymaga dołączenia menu slajdów, używam SWRevealViewController lib, aby do tego podejść
kiedy importuję pliki biblioteki, dodaję podfolder (SWRevealViewController) w obszarze Supporting Files for .h && .m files, uruchamia dwa błędy, nie można importować mostu i SWRevealViewController.h nie został znaleziony.
Jak to naprawić
kiedy przenoszę pliki bezpośrednio do Supporting Files (usuwam podfolder), SWRevealViewController.m jest automatycznie dodawany do Build Phases -> Compile Sources i problem zniknął
źródło
Wystąpił taki błąd, kiedy dodawałem rozszerzenie Today do mojej aplikacji. Cel kompilacji dla rozszerzenia został wygenerowany z taką samą nazwą nagłówka mostkowania jak cel kompilacji mojej aplikacji. Doprowadziło to do błędu, ponieważ rozszerzenie nie widzi plików wymienionych w nagłówku mostkowania mojej aplikacji.
Jedyne, co musisz zrobić, to usunąć lub zmienić nazwę nagłówka mostkowania dla rozszerzenia i wszystko będzie dobrze.
Mam nadzieję, że to pomoże.
źródło
Właściwie utworzyłem pusty plik OSX Source Objective C w ramach projektu (gdzie znajdują się wszystkie moje pliki Swift).
Dodałem import, a następnie usunąłem plik .m .
źródło
Wśród innych poprawek pojawił się błąd, gdy próbowałem zrobić Produkt-> Archiwum. Okazuje się, że miałem to:
Po ustawieniu go w ostatniej linii zadziałało.
źródło
Miał podobny problem, którego nie można rozwiązać żadnym rozwiązaniem powyżej. Mój projekt korzysta z CocoaPods. Zauważyłem, że wraz z błędami dostałem ostrzeżenie z następującym komunikatem:
Rozwiązanie było więc dość proste. W przypadku projektu Pods zmień flagę Build Active Architecture Only na No i oryginalny błąd zniknął.
źródło
Ustaw Precompile Bridging Header na No, aby rozwiązać problem.
źródło