2016-08-26 7 views
28

To co mam zrobić:moduł skompilowany z Swift 3.0 nie mogą być importowane w Swift 2.3

import BSTableViewReorder 

i pojawia się następujący błąd:

Module compiled with Swift 3.0 cannot be imported in Swift 2.3

Co mogę zrobić, aby uczynić go skompilować? Zrobiłem:

Edit > Convert -> Current Swift Syntax 

Korzystanie z Xcode 8 i macOS Sierra.

Dla Zarówno: cel i projekt mam następujące ustawienia Use Legacy Swift Language Version

enter image description here enter image description here

projektu jest mój POD dla cocoapods zależności. Właśnie skonwertowałem projekt do Swift 3.0, ale go nie kompilowałem.

+0

zmiana użytkowania Legacy Swift wersja językowa NO. To pozwoli ci użyć szybkich 3 skompilowanych modułów. –

+0

Zmiana dla jakiego celu? Dla obu? –

+0

Spróbuj zmienić dla obu. Z tego co rozumiem, powinieneś go włączyć tylko jeśli chcesz używać SWIFT 2.3 –

Odpowiedz

25

Musisz zmienić Use Legacy Swift Language Version do NO - to sprawia, że ​​Twój projekt będzie używać Swift 3.

Jeśli chcesz zapakować swój projekt jako POD (dla cocoapods) trzeba dodać plik o nazwie .swift-version (zawierający 1 pojedynczą linię, "3.0"). To powie cocoapods, aby użył kompilatora 3 swift.

Wszystko powinno działać po tych zmianach.

+0

Na to właśnie czekałem :) dzięki :) –

0

Jeśli korzystasz z zewnętrznych frameworków, zaktualizuj je tylko raz dla Xcode 8.1 i zmień opcję Użyj starszej wersji języka Swift na NIE.

0

w moim przypadku, programiści ramowe dodaje tej linii w kodzie, który został przeznaczony do Podfile:

config.build_settings['SWIFT_VERSION'] = '2.3' # or '3.0' 

jak widać, są domyślnie „2,3”, co spowodowało problemy, ponieważ biegałam 3.0. po prostu usunięcie '2.3' # or i pozostawienie '3.0' rozwiązało problem.

0

Jeśli powyższe sugestie nie działają dla spróbować usunąć ~ Library/Developer/Xcode/DerivedData

Powiązane problemy