Mam projekt Objective-C w Xcode 8 Beta 3. Od czasu aktualizacji, przy każdej próbie kompilacji pojawia się następujący błąd:
„Użyj starszej wersji językowej Swift” (SWIFT_VERSION) jest poprawnie skonfigurowane dla celów korzystających z Swift. Użyj menu [Edycja> Konwertuj> Na bieżącą składnię Swift…], aby wybrać wersję Swift lub użyj edytora ustawień kompilacji, aby bezpośrednio skonfigurować ustawienia kompilacji.
Czy ktoś to spotkał? Ponieważ jest to projekt Objective-C, nie ma ustawień kompilacji do skonfigurowania Swift. Upewniłem się również, że żadna zależność projektu ani CocoaPods nie używa Swift. Jedyne rozwiązanie, jakie mam, to użycie wersji Beta 2. Jakieś pomysły, jak rozwiązać ten problem?
Powinienem również wspomnieć, że korzystam z OSX 10.12 Beta 2.
źródło
Odpowiedzi:
Jeśli używasz CocoaPods i chcesz, aby był on naprawiany automatycznie za każdym razem, gdy to robisz
pod install
, możesz dodać te linie na końcu pliku Pod:EDYCJA: Ten problem został już rozwiązany, jeśli używasz CocoaPods w wersji 1.1.1 lub nowszej. Nie zapomnij usunąć
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
ustawienia z głównych celów projektu.źródło
2.3
zamiast3.0
Świetnego rozwiązania! To skutecznie sprawia, że"Use Legacy Swift Language Version"
doNo
(lub jeśli zmienisz na2.3
toYes
). Zaletą tej opcji jest jednak to, że za każdym razempod install
ustawiasz to ustawienie automatycznie! Niesamowite. Widzę, żeSWIFT_VERSION
jest również ustawiony na projekty Obj-C . Zakładam, że nie ma żadnych negatywnych skutków?pod install / update
. To rozwiązanie przyspiesza działanie. Możesz także teraz zaktualizować swoją wersję Cocoapods: powinna również rozwiązać ten problem.Właśnie znalazłem sposób, aby to naprawić.
Przejdź do ustawień kompilacji projektu lub biblioteki i ustaw atrybut Swift Compiler Version „Use Legacy Swift Language Version” z Unspecified na Yes lub NO.
źródło
pod install
zalecamy użycie powyższej odpowiedzi @Tulleb.Od jakiegoś czasu ignoruję ten problem i tymczasem pracuję nad innymi rzeczami - w końcu znalazłem rozwiązanie mojego problemu.
Ponieważ mój projekt dotyczy Celu C, pomyślałem, że może jeden z kapsułów, którego używam, używa Swift, sprawdziłem każdy Kapsuła i żaden z nich nie był.
Ostateczne rozwiązanie było takie, że mój model Core Data został ustawiony do generowania kodu w Swift, mimo że ręcznie go generowałem w menu Plik> Nowy> NSManagedObjectSubclass. Wszystko, co musiałem zrobić, to zmienić go na Cel C.
źródło
Ten problem jest również widoczny w Xcode-8.1. Gdy dodamy nowy cel, taki jak rozszerzenie lub widżet, a biblioteka innej firmy zostanie zintegrowana z nowym celem za pomocą kokosów. Po instalacji Pod . Możemy napotkać taki sam błąd jak powyżej.
Zmień ustawienie Używaj starszej wersji językowej w każdym ustawieniu kompilacji biblioteki na
źródło
Jeśli używasz Xcode 8 lub nowszego
źródło
Dodaj poniższy kod na końcu pliku pod.
źródło
Pracuję nad projektem, który ma mieszany cel C i Swift. Wcześniej używałem Swift w wersji 2.3, a po aktualizacji do Swift 3 nie byłem w stanie zbudować projektu. Xcode narzekał na wspomniany komunikat o błędzie.
Najwyraźniej w moim pliku project.pbxproj nadal była określona nieaktualna wersja Swift. Określono szybką wersję 3.0.1:
Podczas gdy miałem już zainstalowany 3.0.2:
Tak, naprawiłem to, zmieniając wersję Swift w pliku project-pbxproj na:
Wygląda na to, że specyfikator wersji poziomu łatki był zbyt szczegółowy.
źródło
W moim przypadku mam po prostu następujące czynności
Wybierz projekt Cel => Przejdź do ustawienia kompilacji => Wyszukaj „Swift Language Version” => podaj wartość bieżącej wersji Swift
To wszystko To naprawiło mój problem
źródło
Mam ten sam błąd. Próbowałem wyszukać „Użyj starszej wersji językowej”, ale nie znalazłem. Używam Xcode 8.3.3 Po zbyt dużym surfowaniu i obejściu znalazłem to rozwiązanie, które zadziałało dla mnie.
źródło
ustaw „Użyj starszej wersji szybkiej wersji językowej” na „TAK”, jeśli używasz starej wersji swift w swoim projekcie lub dowolnej szybkiej innej firmy. „Nie”, jeśli Twój projekt został zaktualizowany do aktualnej szybkiej wersji. jeśli nie skonfigurujesz szybkiej wersji, po każdej aktualizacji i instalacji, Framework Pod musi to określić.
źródło
Właściwie musiałem wyszukać „Legacy Swift”, aby móc go zmienić z nieokreślonego na „Tak”. Po prostu przewinąłem w dół do sekcji opisanej powyżej, nie byłem w stanie go zmienić. Mam nadzieję, że to komuś pomoże.
źródło
Mój projekt napisany jest w Swift. Mam ten sam błąd z
fastlane
. Stało się to, że mój Xcode został automatycznie zaktualizowany, więc musiałem zaktualizować swój projekt do Swift 3.0. Mam mnóstwo błędów. Naprawianie i debugowanie zajmowało zbyt dużo czasu i w tej chwili nie było warto, więc zdecydowałem się zainstalować starszą wersję Xcode. Przywróciłem mój kod do wersji 2.3. Wtedyfastlane beta
już nie działał. Okazuje się, że musiałem ustawić Narzędzie wiersza poleceń na 7.3.źródło
Miałem ten sam problem i rozwiązałem go, wykonując następujące czynności:
W Projekcie> Ustawienia kompilacji:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Następnie w moim Podfile:
config.build_settings['SWIFT_VERSION'] = '3.0'
Użycie tych trzech ustawień usunęło wszystkie ostrzeżenia i pozwoliło mi poprawnie skompilować.
Najbardziej niejasnym i faktycznie osiągniętym postępem w kompilacji była zmiana SWIFT_VERSION w Podfile z 3 na 3.0, jak sugerowano tutaj .
źródło
Począwszy od XCode 8, możesz używać swift 2.3, mimo że XCode 8 używa swift 3.x jako domyślnej szybkiej wersji. Aby użyć swift 2.3, po prostu włącz flagę Użyj starszej wersji językowej Swift na TAK z ustawienia kompilacji, a następnie XCode użyje Swift 2.3 dla tego celu projektu.
źródło
Przed wypróbowaniem skomplikowanych rozwiązań, oto podstawowa kontrola, którą musisz zrobić, jeśli jesteś nowy w Cocoapods i masz ten problem.
Może być konieczne:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
ponownieMoże to po prostu to.
Jeśli nie, możesz przejść wyżej ;-)
źródło
Miałem ten sam problem po aktualizacji do xcode 8.3.2, ale zniknęła opcja „Użyj starszego języka Swift”. Wygląda na to, że teraz możesz to zmienić:
Użyłem tej poprawki z Alamofire i innymi bibliotekami i wszystko działa dobrze.
źródło
Przejdź do Ustawienia kompilacji projektu dla projektu i Cel wykonaj poniżej dwóch.
Zmień na najnowszy
Swift 3
.Błąd rozwiązany.
Jeśli to naprawiło błąd, polub to.
źródło
W Xcode 9 beta. Przejdź do Ustawień projektu, Ustawień kompilacji, wyszukaj Swift Language Version. W Xcode 9 musisz określić, czy używasz Swift 3.2, czy Swift 4.
źródło
Jeśli zmienisz
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
naNO
nadal nie działa, to dlatego, że problem xcode, a nie twój problem. Wykonując następujące kroki:1. Zmień
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
właściwośćYES
na cel ostrzegawczy2. następnie wyświetli ostrzeżenie na lewym pasku, które zaleca zmianę na szybki 3.0
3. następnie wróć do
NO
. Odbuduj projekt, xcode w końcu wykryje Twoją zmianę naNO
!Problem rozwiązany w tym przypadku!
źródło