Ответ 1
У меня была та же проблема. Мое решение состояло в том, чтобы открыть проект, используя .xcworkspace
, а не .xcodeproj
. .xcodeproj
содержит только основной проект; .xcworkspace
включает все, включая Restkit.
У меня возникла проблема с совершенно новым проектом. Эта проблема возникает как с RestKit, так и с Facebook SDK. Странно SwiftyJSON работает отлично. Я создаю новый быстрый проект и подфайл с:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'test-fb-swift4' do
pod "FBSDKCoreKit"
pod 'SwiftyJSON', '~> 2.1'
pod 'RestKit', :inhibit_warnings => true
end
target 'test-fb-swift4Tests' do
end
После создания этого файла я запускаю pod install и повторно открываю xcode с файлом test-fb-swift4.xcworkspace.
Теперь внутри моего контроллера я помещаю импорт RestKit, и я получаю ошибку. Нет такого модуля "RestKit". Я пробовал много разных способов форматирования Podfile вплоть до очень простых версий, например:
source 'https://github.com/CocoaPods/Specs.git'
pod 'RestKit'
Я попытался добавить и удалить use_frameworks с целью и без цели. С и без: forbit_warnings.
Я запускаю CocoaPods 0.36.4 и пробовал последнюю сборку rc, такую же сделку. Версия Objective-C из другого проекта работает нормально. Это мой первый проект с использованием Swift, и я застрял в этой проблеме.
У меня была та же проблема. Мое решение состояло в том, чтобы открыть проект, используя .xcworkspace
, а не .xcodeproj
. .xcodeproj
содержит только основной проект; .xcworkspace
включает все, включая Restkit.
У меня была аналогичная проблема. Не с RestKit специально, но изначально с HockeySDK. Я пробовал все, включая удаление и переустановку контейнеров, обновление самих cocoapods и обновление контейнеров, удаление производных данных, очистку проекта и т.д.
Затем я заметил, что для меня каждый вопрос был проблемой. После продолжения поиска по смежным темам я наконец обнаружил, что под:
• Цель > Сборка фаз > Ссылка на двоичные файлы с библиотеками
У меня была неуместная структура Pods (вероятно, из предыдущей настройки или установки установки Pods).
После удаления проблемы проблема исчезла. Я заметил, что люди, похоже, сталкиваются с подобными проблемами:
• Проект > Информация > Конфигурации
где структура Pods была неправильно отображена. Поэтому, если первое не работает для вас, вы можете также проверить его на второй.
Второй вариант работал у меня. В моем проекте > Информация > Конфигурации у меня есть 2 цели для моего проекта: обычный (Quizz) и тестовый (QuizzTests):
Для обычной конфигурации была установлена "Pods.debug" или "Pods.release", но для QuizzTests ее не было. Как только я заполнил конфигурацию для QuizzTests, все сработало для меня.
Одна вещь, которую вы могли бы очень легко сделать, чтобы исправить эту проблему, - убедиться, что XCode полностью отключен при установке контейнеров. Всякий раз, когда у меня возникает эта проблема, я возвращаюсь и узнаю, что XCode все еще открыт, хотя я закрыл проект. Надеюсь, это поможет!
Для меня деинтеграция и повторная установка модулей исправили проблему.
Первая
pod deintegrate
а затем
pod install
Другим потенциальным решением, которое я нашел, было добавить use_frameworks!
в ваш подфайл, если вы еще этого не сделали, а затем снова запустите pod install
.
Это была проблема с Firebase, когда я добавил только этот модуль.
Другой причиной этой проблемы могут быть неправильные значения в целевых настройках сборки - только для создания активной архитектуры. Настройки, как на картинке, работают для меня.
У меня была аналогичная проблема при добавлении Fabric в мой проект. У меня было несколько целей (Release and Dev). Он не выбрасывает No Such Module
для import Fabric
. То, что сработало для меня, - это перейти к Project> Build Phases> Link Binary с библиотеками и просто пометить статус обеих фреймов pod как необязательный.
Для меня не найден флажок "Найти неявные зависимости". и это была проблема.
Работал отлично, как только я checked
его.
Путь: Edit Scheme > Build > Find implicit Dependencies
В моем случае мне пришлось только проверить следующий вариант в Xcode
Найти неявные Dependecies
Я не знаю точно, почему, но этого было достаточно для меня, надеюсь на вас тоже:).
После нескольких часов попыток я обнаружил причину. У моей главной цели приложения были 4 конфигурации сборки (отладка, выпуск, внутренняя, внешняя). Однако у моих фреймворков (дочерних проектов) не было внутренних, внешних, поскольку они добавлены пользователем. Как только я добавил внутренние/внешние к моим проектным проектам, все архивированные в порядке.
Это должно сделать трюк:
Если вы используете несколько целей, которые обращаются к одному и тому же классу (например, приложение расширения сообщений), и если этот класс добавлен к обеим целям, вы должны добавить pod для обеих целей в PodFile.
В моем случае сначала у меня была только одна цель в xcode. Я выполнил pod install
.
Несколько месяцев спустя мне пришлось сделать еще одну цель, поэтому у меня было несколько целей.
В этой ситуации, если я делаю pod install
и строю xcode, я получаю ошибку "нет такого модуля".
Итак, я удалил файлы pod
, а затем pod init
.
Формат подфайла изменен для нескольких целей
Это работает!!
Проверьте это!
Вещи, которые я пробовал:
Единственное решение, которое я имел для этой проблемы, заключалось в том, чтобы показать цель Pods- (yourapp) в сборщике схем (рядом с кнопками run/stop) и вручную создать эту цель Pods-, прежде чем снова создать и запустить мою главную цель приложения. Надеюсь, это может спасти кого-то 10 минут!
Один из ответов здесь заключался в make sure that XCode is completely shut down when installing pods
и я знал, что не сделал этого. Поэтому я просто полностью закрыл Xcode и снова открыл его, не выполнив pod install
и исправил проблему. Поэтому перезагрузка Xcode работала для меня.
Когда я редактировал и удалял каталог, мне не нужно было в Проект - Настройки сборки (рядом с Информация), он протирал из двух элементов в Пути поиска в кармане в моем приложении Целевая в Настройки сборки. Убедитесь, что все четыре строки имеют записи, заполненные автоматически с помощью Pod, как показано на рисунке ниже:
Чтобы скопировать записи из Отладка и Отпустить в строки ниже, выберите одну строку за раз и нажмите delete, которая должна быть скопирована из строки выше.
Как только я это сделаю, рабочая область будет построена просто отлично.
Создается ли ваше приложение с использованием основной цели?
Если это так, я смог получить эту работу:
pod install
Вот мой последний подфайл.
platform :ios, '11.3'
target 'myapp' do
use_frameworks!
# Pods for myapp
pod 'KeychainSwift'
pod 'ReachabilitySwift'
pod 'Firebase/Core'
pod 'Fabric'
pod 'Crashlytics'
target 'myappTests' do
inherit! :search_paths
# Pods for testing
end
target 'myappUITests' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-local' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-master' do
inherit! :search_paths
# Pods for testing
end
end
Журнал идей. Во-первых, я думаю, что эта проблема связана с тем, что ссылка на библиотеку или путь поиска в каркасе отсутствует в этом модуле, но на самом деле это происходит там.
Во-вторых, я думаю, это может быть потому, что поддержка версии на XCode 10 приводит к неправильному отображению элемента. Но после чистого проекта удалите полученные данные, закройте Xcode, удалите pod relate file и re-pod install. Все эти шаги все еще не удались.... Я провел 4 часа на этом втором этапе...
В-третьих, наконец, продолжая поиски google в StackOverflow, я обнаружил, что этот человек @Tyler Sheaffer оставил свой опыт в решении @metatheoretic.
Один человек оставляет свой опыт под другим ответом. И это напоминает мне, что я меняю конфигурацию в начале дня на несколько схем, что самое главное, потому что из учебника я следую тому, что он учит нас называть имя конфигурации с примером: Debug (Development). Но Cocoapods не могут принять(). Поэтому я изменил конфигурационное имя Debug_Development... Итак !!! Проблема заключается в том, что управление схемами автоматически обновляет имя конфигурации на одной из моих клиентских схем, таких как "Разработка", и я проверяю только обновление имени в схеме "Разработка", которое делает успешное обновление, затем я просканирую, чтобы проверить другие две пользовательские схемы (этап, производство). Но!!! Эти двое по-прежнему остаются старым неправильным именем конфигурации. Поэтому мой модуль Kingfisher никогда не будет найден, потому что он не соответствует конфигурации и схеме. Наконец, я решаю эту проблему, выбирая новый файл конфигурации обновления в схеме Project/Scheme/Manage Schemes/Case closed.
Это произошло со мной, когда расширение приложения имело другую целевую версию iOS, чем приложение. Совпадение с ними исправило это для меня.
Проблема может заключаться в том, что на самом деле такого модуля нет. Особенно, если имя pod содержит тире и другие противоречивые символы.
В моем случае я пытался использовать Dip-UI библиотеку. В примере проекта использовался Карфаген, который я хотел заменить CocoaPods. Имя модуля с Carthage было DipUI
, в то время как CocoaPods было Dip_UI
, что означало, что я получаю "Нет такого модуля", пока не изменю имя.
Ваш xcode не обновляется до версии, ожидаемой библиотекой/фреймворком