Niedawno zaktualizowałem xcode do wersji 9. Wcześniej w Xcode 8.x za każdym razem, gdy go używam pod update
, wyświetla mi się kod aktualizacji, aby przekonwertować kod do Swift 3 i zrobić to, aby rozwiązać błędy. Ale teraz daje mi ten błąd:
Ustawienie kompilacji „Swift Language Version” (SWIFT_VERSION) musi mieć wartość obsługiwaną dla celów, które używają języka Swift. To ustawienie można ustawić w edytorze ustawień kompilacji.
W przypadku tego błędu próbowałem Build Settings > Swift Language Version
i był to Swift 3.2. Ale ponieważ wezwanie aktualizacji ponownie zainstalowało niektóre strąki, takie jak Alamofire, i mówi, aby zainstalować Xcode 8.x, aby przekonwertować kod na Swift 3, więc muszę zainstalować dodatkowa wersja z najnowszym Xcode? Jeśli tak, to jak mogę zainstalować Xcode 8 z Xcode 9?
Odpowiedzi:
Odpowiedź na pytanie:
Możesz pobrać Xcode 8.x z portalu Apple Download Portal lub pobrać Xcode 8.3.3 (lub zobacz: Skąd pobrać starszą wersję Xcode ), jeśli masz konto programisty premium (identyfikator Apple). Możesz zainstalować i pracować z Xcode 9 i Xcode 8.x w pojedynczym systemie (Mac). (Upewnij się, że
Command Line Tools
obsługujesz obie wersje Xcode, aby pracować z terminalem (patrz: Jak zainstalować 'Narzędzie wiersza poleceń' ))Wskazówka: Jak przeprowadzić migrację kodu Wersje Swift zgodne z Xcode 9 (Swift 3.2 lub 4)
Xcode 9 umożliwia tylko konwersję / migrację z
Swift 3.0
naSwift 3.2/4.0
. Jeśli więc aktualna wersja języka Swift Twojego projektu jest niższa niż 3.0, musisz przeprowadzić migrację kodu w wersji zgodnej ze Swift 3 przy użyciu Xcode 8.x.Jest to typowy komunikat o błędzie, który Xcode 9 wyświetla, jeśli podczas migracji identyfikuje język Swift w wersji poniżej 3.0.
Swift 3.2 jest obsługiwany zarówno przez Xcode 9, jak i Xcode 8.
Przekonwertuj swój kod źródłowy z Swift 2.0 na 3.2 przy użyciu Xcode 8, a następnie kontynuuj z Xcode 9 (Swift 3.2 lub 4).
Aby ułatwić migrację kodu, wykonaj następujące kroki: (pomoże ci to przekonwertować do najnowszej wersji swift obsługiwanej przez narzędzie Xcode)
źródło
W przypadku projektów celu C utworzonych przy użyciu Xcode 8, a teraz otwieranych w Xcode 9, wyświetla ten sam błąd, jak wspomniano w pytaniu.
Aby to naprawić, naciśnij przycisk + w Ustawieniach kompilacji i wybierz Dodaj ustawienie zdefiniowane przez użytkownika, jak pokazano na poniższym obrazku
Następnie w nowo utworzonym wierszu dodaj
SWIFT_VERSION
jako klucz i3.2
jako wartość, jak poniżej.Naprawi błąd dla projektów z celem c.
źródło
Właśnie otrzymałem to po utworzeniu nowego projektu Objective-C w Xcode 10, po dodaniu pliku modelu Core Data do projektu.
Znalazłem dwa sposoby, aby to naprawić:
Model zawiera plik „zawartość” z następującym wierszem:
Tam jest
sourceLanguage="Swift"
wpis. Zmień to na,sourceLanguage="Objective-C"
a błąd zniknie.Aby znaleźć plik „zawartość”, kliknij prawym przyciskiem myszy
.xcdatamodeld
w Xcode i wykonaj „Pokaż w Finderze”. Kliknij prawym przyciskiem myszy rzeczywisty plik (Findera) i wykonaj „Pokaż zawartość pakietu”Ponadto: zmiana języka modelu uniemożliwi Xcode generowanie plików podklas obiektów zarządzanych w języku Swift.
źródło
Może się to zdarzyć po dodaniu danych podstawowych do istniejącego projektu.
Sprawdź plik :
<Name> / <Name> .xcdatamodeld / <Name> .xcdatamodel / content
.
Ten plik zawiera wpis „sourceLanguage”, który (domyślnie) mógł mieć wartość „Swift”. Zmień to na „Cel-C”.
źródło
Po prostu klikam najnowszy przycisk szybkiej konwersji i ustawiam docelową kompilację aplikacji-> Swift wersja językowa: swift 4.0,
Mam nadzieję, że to pomoże.
źródło
To rozwiązanie działa, gdy nic innego nie działa:
Spędziłem ponad tydzień, aby przekonwertować cały projekt i doszedłem do rozwiązania poniżej:
Najpierw odintegruj zależność kokopodów z projektu, a następnie zacznij konwertować projekt do najnowszej szybkiej wersji.
Przejdź do katalogu projektów w terminalu i wpisz:
Spowoduje to dezintegrację kokonodów z projektu i żadne ślady CocoaPods nie pozostaną w projekcie. Ale jednocześnie nie usunie xcworkspace i podfiles. W porządku, jeśli są obecne.
Teraz musisz otworzyć xcodeproj (nie xcworkspace), a otrzymasz wiele błędów, ponieważ w swoich głównych projektach wywołałeś metody zależności cocoapods.
Aby usunąć te błędy, masz dwie opcje:
Po usunięciu wszystkich błędów możesz przekonwertować kod do najnowszej szybkiej wersji.
Czasami, jeśli otrzymujesz dziwne błędy, spróbuj wyczyścić dane pochodne i spróbuj ponownie.
źródło
może potrzebujesz pobrać toolchain. Ten błąd występuje, gdy nie masz odpowiedniej wersji kompilatora Swift.
źródło
W moim przypadku wszystkie ostrzeżenia zniknęły po bezpośredniej zmianie wersji Swift z 2.x na 4.0 w ustawieniach kompilacji, z wyjątkiem dwóch ostrzeżeń.
Te ostrzeżenia związane z folderem
myprojectnameTests
imyprojectnameUITests
. Nie zauważyłem i pomyślałem, że ma to związek z bezpośrednią imigracją z Xcode 7 do Xcode 9 i pomyślałem, że nie mogę rozwiązać tego problemu i powinienem zainstalować brakującą wersję Xcode 8.W moim przypadku usunąłem te foldery i wszystkie ostrzeżenia zniknęły, ale możesz odtworzyć ten folder i zawiera za pomocą tego:
file > new > target > (uitest or unittest extensions)
i użyj tego artykułu do tworzenia przypadków testowych: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html
źródło