Переход от ручной установки для использования Realm через Cocoapods в Xcode - PullRequest
0 голосов
/ 11 апреля 2019

В настоящее время я использую Realm в одном из своих проектов, где я установил его вручную. Все работало нормально, пока я не обновил Xcode с 10.1 до 10.2. Теперь я продолжаю получать следующую ошибку.

Модуль, скомпилированный с помощью Swift 4.2, не может быть импортирован компилятором Swift 5.0: /Users/userName/MyApp/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386.swiftmodule

Я считаю, что это связано с тем, что когда я пытаюсь заменить Realm frameworks в моем проекте на новейшую Realm, скомпилированную для Xcode 10.2, Xcode не копирует файлы, он просто ссылается на них, даже когда отметив опцию Копировать файлы при необходимости .

В любом случае, теперь я хотел бы попытаться использовать Realm - Cocoapods для устранения такого рода проблем каждый раз, когда я обновляю Xcode, поэтому мои вопросы ...

  1. Что мне нужно изменить в Xcode, чтобы я мог перейти от ручной установки к использованию Realm через Cocoapods?

  2. Что мне нужно в Framework Search Paths?

  3. Нужно ли удалить Run Script Phase bash "$ {BUILT_PRODUCTS_DIR} / $ {FRAMEWORKS_FOLDER_PATH} /Realm.framework/strip-frameworks.sh" ?

  4. Что мне нужно в моем файле Pod? Мне больше интересно посмотреть, как я включу Realm для своего WatchApp Extension, так как я не смог найти никакой информации в документации.

Вот как сейчас выглядит мой файл Pod.

Pod File

#platform :ios, '9.3'

target 'MyApp' do
  use_frameworks!

  # Pods for MyApp
  pod 'Firebase/Core'
  pod 'NVActivityIndicatorView'

  target 'MyAppTests' do
    inherit! :search_paths
  end

  target 'MyAppUITests' do
    inherit! :search_paths
  end
end

target 'MyApp Watch App' do
  use_frameworks!

end

target 'MyApp Watch App Extension' do
  use_frameworks!

end

К вашему сведению - я уже использую Cocoapods в своем проекте, но пока не для Realm. Кроме того, я использую Realm для iOS и WatchApp Extension в этом проекте.

1 Ответ

1 голос
/ 12 апреля 2019

Если у вас уже есть рабочее пространство, созданное cocoapods, вам не нужно изменять настройки вашего проекта. Когда вы добавляете новый pod в ваш podfile, cocoapods автоматически обрабатывает его правильное связывание с вашим проектом.

Просто удалите вручную добавленные файлы инфраструктуры Realm, удалите пользовательскую фазу сборки Run Script, содержащую "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh", затем запустите pod update, и все будет хорошо.

Что касается исходной проблемы

Модуль, скомпилированный с помощью Swift 4.2, не может быть импортирован компилятором Swift 5.0: /Users/userName/MyApp/RealmSwift.framework/Modules/RealmSwift.swiftmodule/i386.swiftmodule

,при использовании скомпилированных фреймворков вам нужно подождать, пока разработчик фреймворка не обновит скомпилированные версии для Swift 5 (или новейшей версии, на которую вы хотите переключить свой проект), прежде чем вы сможете их использовать.

Поскольку cocoapods компилируетсявсе зависимости от источника на вашем компьютере, эта проблема несовместимого компилятора Swift верСион не может возникнуть, и вы даже можете контролировать, какую версию Swift использовать для каждого проекта, в частности, из вашего подфайла.

...