2016-10-25 9 views
82

uaktualnieniu Xcode 8.1 do GM i teraz otrzymuję poniżej błędu dla SwiftyJSON. Wydaje się, że działają inne zaimportowane struktury. Czy istnieje sposób zmuszenia go do działania w Swift 3, dopóki SwiftyJSON nie zaktualizuje swojej struktury? Użyłem Kartaginy do importowania/aktualizowania frameworków. Próbowałem również zmienići bez skutku.moduł skompilowany z szybkim 3,0 nie mogą być importowane w Swift 3.0.1

moduł skompilowany z Swift 3.0 nie mogą być importowane w Swift 3.0.1: Moduły/SwiftyJSON.swiftmodule/arm64.swiftmodule

Odpowiedz

167

SwiftyJson jest pobierany prekompilowana przez Kartaginy. Prekompilowane pobieranie odbywa się za pomocą Swift w wersji 3.0. To sprawia, że ​​kompilator skarży się, że wersja nie jest poprawna. Za pomocą następującego polecenia:

carthage update --platform iOS --no-use-binaries 

SwiftyJson (i wszystkich innych struktur w obrębie Kartaginy) zostaną zebrane lokalnie przy użyciu lokalnej wersji Swift (3.0.1) oraz kompilator nie będzie już narzekać.

+7

Prawdopodobnie zaoszczędzisz mi godzinę wyszukiwania. Dziękuję Ci. – djv

+22

Nie ma za co. Szczerze mówiąc, carthage powinien być nieco bardziej inteligentny i sprawdzić numer wersji swift. – zirinisp

+0

Jakieś inne pomysły? Ponieważ nie zadziałało to dla mnie, chociaż w moim przypadku mam problemy z Unboxem – Xernox

10

Upewnij się, że został umieszczony nowy XCode 8.1 pakiet GM w swojej Folder aplikacji. Natrafiliśmy na ten problem, gdy jeden z nas korzystał z Kartaginy, aby zaktualizować nasze zależności, ale nie zastąpił starej aplikacji 8.0 w folderze aplikacji (8.1 GM uruchomiony z pulpitu).

Chcesz się upewnić, że po uruchomieniu w terminalu: xcrun swift -version, że zwróci Apple Swift version 3.0.1.

+0

To zadziałało dla mnie, dziękuję! Również polecenie działające w terminalu to xcrun swift -version – HH887

+2

Ciągle pojawia się ten sam problem. Wszelkie inne sugestie –

+0

Korekta, ja też. Zbuduj go dobrze, pierwszy raz obejść i teraz otrzymując błąd ponownie, gdy próbuje go uruchomić. – HH887

18

Usuń aplikację chache z DerivedData i przebuduj. błąd może być naprawiony.

DerivedData ścieżka tak:

~/Library/Developer/Xcode/DerivedData/ 
+0

Dziękuję, to działało dla mnie. – Nosgoroth

+0

Pracował dla mnie, usunąłem to, usunąłem folder pod i użyłem "podinstalacji". I naprawione. –

+0

Witam. To rozwiązanie sprawdziło się u mnie. Czy możesz wyjaśnić szczegółowo, co się dzieje, gdy usuwamy dane pochodne? Jak błąd odchodzi? – iPhoneDeveloper

0

miałem dokładnie ten sam problem z biblioteką XCTest_Gherkin, co pracował dla mnie było:

  1. Product ->Scheme ->XCTest-Gherkin
  2. Product ->Build

Mam nadzieję, że to pomaga. Używam Cocoapods.

5

Podobnie jak @zirinisp powiedział:

  1. można za pomocą następującego polecenia: carthage update --platform iOS --no-use-binaries
  2. pomocą następującego polecenia: xcrun swift -version zobaczyć Swift wersję
  3. to zrobić: Xcode->preferences->locations aby wyczyścić dane pochodzące i archiwizuje dane, najważniejsze do zmiany narzędzi wiersza poleceń na "Xcode 8.1"
  4. Korzystając z poniższego polecenia: xcrun swift -version, można zobaczyć wersję szybką 3.0.1
  5. Set Use Legacy Swift Language Version = NO

Mam nadzieję, że to pomoże Ci

9

Aktualizowanie domyślnego Xcode do nowego terminalu na pracował dla mnie.

Krok 1: Użyj następującego polecenia, aby zaktualizować wersję Xcode do najnowszej wersji na Terminalu. Ref

sudo xcode-select -switch <path/to/>Xcode.app 

Krok 2: Teraz spróbuj Polecenie update carthage

carthage update --platform iOS 
8

Wystarczy dać najnowsze aktualizacje:

Carthage wydała version 0.20 na 27 lutego 2017 r

Kartagina używa teraz tylko pre-build binarny , jeśli jest dostępny pre-build plik binarny jest zgodny z.

Mówi się, że nie trzeba już używać: --no-use-binaries, aby uniknąć niekompatybilnej struktury wstępnej.

Więc upewnij się, że masz wersję carthage większa niż 0.20 i po prostu zrobić:

carthage update --platform iOS 
+0

To zadziałało dla mnie, dzięki! –

+0

XCode 8.3.3 Po aktualizacji Kartaginę do wersji 0.25 i po zrobieniu poniżej, pracował dla mnie aktualizacja carthage --platform iOS --no-use-binarne – anoop4real

+0

@ anoop4real to nie działa dla Ciebie bez '- nie używać plików binarnych? Kartagina powinna być w stanie wykryć, czy plik binarny jest zgodny z wersją kompilatora. Jeśli nie jest kompatybilny, powinien automatycznie upuścić pobrany plik binarny i zbudować strukturę lokalnie. – kanekin

0

W Xcode Ustawienia Zbuduj upewnić się, że ramowe wyszukiwania Ścieżki zawierać odpowiedni folder Carthage produkcji:

$(inherited) 
$(PROJECT_DIR)/Carthage/Build/iOS 
Powiązane problemy