Zaktualizowałem Xcode do 8.1 GM i teraz otrzymuję poniższy błąd dla SwiftyJSON. Wydaje się, że inne zaimportowane frameworki działają. Czy istnieje sposób, aby wymusić to, aby działało w Swift 3, dopóki SwiftyJSON nie zaktualizuje ich struktury? Użyłem Carthage do importu / aktualizacji frameworków. Próbowałem też zmieniać Use Legacy Swift language version
On i Off bezskutecznie.
Modułu skompilowanego w Swift 3.0 nie można zaimportować w Swift 3.0.1: Modules / SwiftyJSON.swiftmodule / arm64.swiftmodule
źródło
Cartfile
, abym mógł po prostu pisaćcarthage update
bez znajomości / martwienia się innymi programistami o dodatkowe flagi?Usuń pamięć podręczną aplikacji z DerivedData i odbuduj. błąd można naprawić.
Ścieżka DerivedData w następujący sposób:
~/Library/Developer/Xcode/DerivedData/
źródło
Upewnij się, że umieściłeś nowy pakiet XCode 8.1 GM w folderze Aplikacje. Napotkaliśmy ten problem, gdy jeden z nas uruchamiał Carthage, aby zaktualizować nasze zależności, ale nie zastąpił starej aplikacji XCode 8.0 w folderze aplikacji (8.1 GM działał poza pulpitem).
Chcesz się upewnić, że po uruchomieniu następującego w terminalu:
xcrun swift -version
że zwróciApple Swift version 3.0.1
.źródło
carthage update --platform iOS --no-use-binaries
i nadal nie działa. Wyczyściłem projekt i zrestartowałem Xcode i nadal otrzymuję błąd. Coś jeszcze mogę spróbować?Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) Target: x86_64-apple-macosx10.9
Aktualizacja domyślna
Xcode
do nowej na terminalu zadziałała dla mnie.Krok 1: Użyj następującego polecenia, aby zaktualizować wersję Xcode do najnowszej w Terminalu. Nr ref
sudo xcode-select -switch <path/to/>Xcode.app
Krok 2: Teraz wypróbuj polecenie aktualizacji kartaginy
źródło
Tylko po to, aby podać najnowsze aktualizacje:
Carthage wydała wersję 0.20 27 lutego 2017 r.
Carthage używa teraz pliku binarnego przed kompilacją tylko wtedy, gdy dostępny plik binarny przed kompilacją jest zgodny .
To powiedziawszy, nie musisz już używać:
--no-use-binaries
aby uniknąć niezgodnego środowiska przed kompilacją.Więc upewnij się, że masz wersję kartaginy większą niż
0.20
i po prostu zrób:źródło
--no-use-binaries
? Carthage powinien być w stanie wykryć, czy plik binarny jest zgodny z wersją kompilatora. Jeśli nie jest kompatybilny, powinien automatycznie porzucić pobrany plik binarny i zbudować szkielet lokalnie.Tak jak powiedział @zirinisp:
carthage update --platform iOS --no-use-binaries
xcrun swift -version
aby zobaczyć wersję SwiftXcode->preferences->locations
aby wyczyścić dane pochodne i dane archiwalne, najważniejsze jest, aby zmienić narzędzia wiersza poleceń na „Xcode 8.1
"xcrun swift -version
:, możesz zobaczyć, że wersja szybka to 3.0.1Use Legacy Swift Language Version = NO
Mam nadzieję, że ci to pomoże
źródło
Przenieś wersję beta / GM, jeśli Xcode do folderu / Applications i nazwij go Xcode-beta
Sprawdź wynik:
xcrun swift --version
uruchamiając to polecenie w terminalu, jego dane wyjściowe powinny być zgodne z wersją Swift, którą ma skompilować aplikacja, ponieważ Carthage używa danych wyjściowych tego polecenia do określenia lokalnej wersji Swift.
Zaktualizuj Xcode do najnowszej wersji na Terminalu, uruchamiając następujące polecenie:
sudo xcode-select -s /Applications/Xcode-beta.app/
Zbuduj biblioteki dla iOS i uniemożliwia Carthage pobieranie istniejących (ale niekompatybilnych) prekompilowanych plików binarnych, uruchamiając następujące polecenie:
carthage update --platform iOS --no-use-binaries
Oczyść i zbuduj
źródło
Miałem dokładnie ten sam problem z biblioteką
XCTest_Gherkin
, co dla mnie zadziałało to:Product
->Scheme
->XCTest-Gherkin
Product
->Build
Mam nadzieję, że to pomoże. Używam Cocoapods.
źródło
W ustawieniach kompilacji Xcode upewnij się, że ścieżki wyszukiwania struktury zawierają odpowiedni folder kompilacji Kartaginy:
$(inherited) $(PROJECT_DIR)/Carthage/Build/iOS
źródło