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 не компилируется, потому что не может найти файл. Поэтому я предполагаю, что заголовок моста работает, так как способ построения моего заголовка моста теперь не генерирует никаких ошибок компилятора, вызванных отсутствием поиска заголовков.
Заголовок моста
Каркасные Пути Поиска
Я также добавил корневой каталог моего проекта в путь поиска фреймворка.
Связанные рамки
Наконец, я также связал все фреймворки с проектом.
Я что-то упустил с моей настройкой? Я не мог заставить Cocoapods работать над моим проектом уже почти неделю. Я даже создал новый проект, думая, что мой был просто испорчен; который ничего не изменил. Я не знаю, что делать отсюда, чтобы решить эту проблему.
редактировать
Проведя дополнительное исследование, я обнаружил в блоге сообщение о том, что вы должны включить каталог Pods в поиск по заголовкам пользователей.
Комментатор также упомянул, что если вы используете более новую поддержку Cocoapods Frameworks для Swift, то ему нужно будет включить путь поиска Frameworks/**. Я включил и Pods/** и Frameworks/**, но все еще имею ту же проблему.
После некоторого дальнейшего чтения, это начинает звучать так, как будто это ограничение Cocoapods. Насколько я понимаю, вы не можете одновременно использовать библиотеки и фреймворки в проекте.
3 ответа
Как только вы используете use_frameworks!
в вашем Podfile модули Objective C, такие как SSKeychain, также получают как фреймворки.
Фактическая проблема заключается в том, что при использовании каркасов в заголовке моста работает только импорт модулей. Кроме того, вы можете полностью избавиться от связующего заголовка, поскольку при использовании фреймворков это не нужно, их можно импортировать непосредственно в Swift.
Чтобы уточнить, что вы должны сделать, чтобы это работало:
- Обязательно иметь
use_frameworks!
в вашем подфиле - Неважно, есть ли у вас заголовок Bridging или нет. Оставь это нетронутым
- В вашем файле SWIFT просто используйте
import Podname
Вот и все, вы хорошо идти. Конечно, может случиться так, что вам нужно очистить проект или удалить папку с производными данными. Постройте и вы можете использовать его.
Если вы не используете быстрые капсулы,
Попробуйте удалить use_frameworks!
на вашем подфиле.
Запустите установку pod на терминале.
Очистить и построить!
Я потратил почти полчаса на его исправление, попытался добавить эти пути в Пути поиска или заново добавить заголовок моста, но ошибка была той же.
Поэтому, в моем случае, заголовочный файл моста не был проблемой, его на Podfile.
Я надеюсь, что это помогает!