Xcode не может видеть объекты, добавленные через Cocoapods
У меня есть podfile
, определенный со следующими пакетами.
platform :ios, '8.0'
use_frameworks!
target 'LifeStream' do
pod 'SSKeychain'
pod 'LiveSDK'
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift-2.0'
end
Я установил контейнеры и открыл свое рабочее пространство. Я обнаружил, что любое использование Alamofire отлично работает, поскольку версия Swift 2 импортирует проект в качестве рамки.
Однако, когда я пытаюсь использовать классы SSKeychain, я получаю
Использование неразрешенного идентификатора "SSKeychain"
То же самое относится к любому классу, который я пытаюсь использовать в LiveSDK.
У меня есть заголовок моста в корневом каталоге проектов, и проект настроен на его использование.
#ifndef Header_h
#define Header_h
#import "SSKeychain/SSKeychain.h"
#import "LiveSDK/LiveConnectClient.h"
#endif /* Header_h */
если я изменяю #import
из
#import "SSKeychain/SSKeychain.h"
к
#import "SSKeychain.h"
Xcode не удается скомпилировать, поскольку он не может найти файл. Поэтому я предполагаю, что заголовок моста работает, поскольку способ, которым мой заголовок моста теперь построен, не генерирует ошибок компилятора, вызванных не обнаружением заголовков.
Заголовок заголовка
![Objective-c Bridging header]()
Пути поиска в каркасе
Я также добавил корневой каталог проекта в путь поиска фреймов.
![Framework search paths]()
Связанные структуры
Наконец, я связал все рамки с проектом.
![Linked frameworks]()
Я что-то упустил с настройкой? Я не смог заставить Cocoapods работать над моим проектом уже почти неделю. Я даже создал совершенно новый проект, думая, что моя была просто испорчена; которые ничего не меняли. Я не знаю, что делать дальше, чтобы решить эту проблему.
Изменить
После некоторого дополнительного исследования я нашел сообщение в блоге, в котором показано, что вы должны включить каталог Pods в User Header Search
![User Header Search]()
Комментарий также отметил, что если вы используете новую поддержку Cocoapods Framework для Swift, тогда она должна будет включать путь поиска Framework/**. Я включил как Pods/**, так и Frameworks/**, но по-прежнему имеет ту же проблему.
После некоторого дальнейшего чтения, это начинает звучать так, как это ограничение Cocoapods. Насколько я понимаю, вы не можете одновременно использовать библиотеки и фреймворки в проекте.
Ответы
Ответ 1
Как только вы используете use_frameworks!
в вашем подпикселе, Objective-C Pods, такие как SSKeychain, также получат сборку в виде фреймворков.
Фактическая проблема заключается в том, что только импорт модулей работает в заголовке моста при использовании фреймворков. Кроме того, вы можете полностью избавиться от заголовка моста, поскольку при использовании фреймворков он не нужен, их можно импортировать непосредственно в Swift.
Ответ 2
Чтобы уточнить, что вы должны сделать, чтобы заставить его работать:
- Убедитесь, что имеет
use_frameworks!
в вашем подпикселе
- Не имеет значения, есть ли заголовок Bridging или нет. Оставьте его нетронутым.
- В вашем файле SWIFT просто используйте
import Podname
Что ты, ты в порядке. Конечно, может случиться так, что вам нужно очистить проект или удалить папку с производными данными. Постройте, и вы можете использовать его.
Ответ 3
Если вы не используете быстрые стручки,
Попробуйте удалить use_frameworks!
в вашем подфайле.
Запустить программу установки на терминал.
Очистить и построить!
Я потратил почти полчаса на это, я попытался добавить эти пути на пути поиска или повторно добавить заголовок-мост, но ошибка была такой же.
Поэтому, в моем случае, заголовок заголовочного файла не был проблемой, его в Подфайл.
Надеюсь, это поможет!