Я пытаюсь запустить свой текущий проект в новой бета-версии Xcode 9, но когда я это делаю, он говорит Module compiled with Swift 3.1 cannot be imported in Swift 4.0
. Как я могу решить эту проблему? Я не использую какаоподы.
Как я могу использовать Realm со Swift 4?
Ответы (2)
Обновление. Начиная с версии 2.10.1, выпущенной 14 сентября 2017 г., готовые двоичные файлы 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.
Вы можете сделать это, проверив тег выпуска из 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.
sh build.sh ios-swift
или любую другую команду сборки, которую я перечислил. Если вы не видите каталог, я предлагаю поделиться выводом, который вы видите из вызова build.sh
.
- person bdash; 20.06.2017
--recursive
к вызову git clone
в ответе.
- person bdash; 21.07.2017
В качестве дополнения к пункту 3 bdash о том, как собрать Realm вручную из исходного кода, и чтобы ответить на вопрос addzo об ошибке xcodebuild (с которой я также столкнулся): убедитесь, что симулятор iPhone 6 настроен для вашего Xcode 9, чтобы избежать эта ошибка. Я полагаю, что скрипты сборки Realm должны быть нацелены на это. Во всяком случае, это решило это для меня.