Я пытаюсь запустить мой текущий проект в новой бета-версии Xcode 9, но когда я это делаю, он говорит Module compiled with Swift 3.1 cannot be imported in Swift 4.0
. Как я могу решить эту проблему? Я не использую cocoapods.
Как я могу использовать Realm с Swift 4?
Ответ 1
Обновление. Начиная с версии v.2.10.1, выпущенной в 2017-09-14, предварительно созданные двоичные файлы Realm включают в себя фреймворки, созданные с помощью Xcode 9 для Swift 3.2 и 4.0. Больше не нужно создавать их самостоятельно.
Информация ниже остается актуальной для всех, кто хочет использовать Realm с предварительными версиями Xcode в будущем.
Если вы в настоящее время интегрируете предварительно созданные двоичные файлы Realm, вам нужно переключиться на создание Realm из исходного кода, чтобы поддерживать Swift 3.2 и 4.0, поскольку Realm не публикует готовые двоичные файлы для предварительных версий Xcode. Вы можете построить Realm из источника одним из трех способов:
-
Использование CocoaPods.
CocoaPods всегда строит зависимости от источника.
-
Использование Карфагена.
По умолчанию Carthage попытается загрузить готовые двоичные файлы, но вернется к построению из исходного кода, если предварительно созданные двоичные файлы предназначены для другой версии Swift, чем используемая версия Xcode.
-
Скомпилируйте Realm вручную из исходного кода, а затем интегрируйте встроенные фреймворки так же, как и предустановленные двоичные файлы, предоставляемые Realm.
Вы можете сделать это, проверив тег release из Git:
git clone --recursive https://github.com/realm/realm-cocoa.git cd realm-cocoa git checkout v2.10.0
Затем запустите любую из следующих команд, соответствующую платформе, которая вам нужна для создания инфраструктуры Realm Swift для этой платформы:
REALM_SWIFT_VERSION=4.0 sh build.sh ios-swift REALM_SWIFT_VERSION=4.0 sh build.sh osx-swift REALM_SWIFT_VERSION=4.0 sh build.sh watchos-swift REALM_SWIFT_VERSION=4.0 sh build.sh tvos-swift
Встроенные фреймворки будут помещены в каталог
build
в источнике Realm, где вы можете их интегрировать так же, как и предварительно созданные двоичные файлы, предоставляемые Realm.Эти встроенные фреймворки также должны работать с приложениями, использующими Swift 3.2, благодаря тому же компилятору, что и Swift 4.0.
Ответ 2
В качестве продолжения bdash item 3 о том, как создать Realm вручную из исходного кода, и ответить на вопрос о вопросе о ошибке xcodebuild (с которой я столкнулся): убедитесь, что симулятор iPhone 6 настроен для вашего Xcode 9, чтобы избежать этой ошибки. Я полагаю, что скрипты Realm build должны ориентироваться на нее. Во всяком случае, это разрешило это для меня.