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 Соединительный заголовок

Каркасные Пути Поиска

Я также добавил корневой каталог моего проекта в путь поиска фреймворка.

Каркасные пути поиска

Связанные рамки

Наконец, я также связал все фреймворки с проектом.

Связанные рамки

Я что-то упустил с моей настройкой? Я не мог заставить Cocoapods работать над моим проектом уже почти неделю. Я даже создал новый проект, думая, что мой был просто испорчен; который ничего не изменил. Я не знаю, что делать отсюда, чтобы решить эту проблему.

редактировать

Проведя дополнительное исследование, я обнаружил в блоге сообщение о том, что вы должны включить каталог Pods в поиск по заголовкам пользователей.

Поиск заголовка пользователя

Комментатор также упомянул, что если вы используете более новую поддержку Cocoapods Frameworks для Swift, то ему нужно будет включить путь поиска Frameworks/**. Я включил и Pods/** и Frameworks/**, но все еще имею ту же проблему.

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

3 ответа

Решение

Как только вы используете use_frameworks! в вашем Podfile модули Objective C, такие как SSKeychain, также получают как фреймворки.

Фактическая проблема заключается в том, что при использовании каркасов в заголовке моста работает только импорт модулей. Кроме того, вы можете полностью избавиться от связующего заголовка, поскольку при использовании фреймворков это не нужно, их можно импортировать непосредственно в Swift.

Чтобы уточнить, что вы должны сделать, чтобы это работало:

  1. Обязательно иметь use_frameworks! в вашем подфиле
  2. Неважно, есть ли у вас заголовок Bridging или нет. Оставь это нетронутым
  3. В вашем файле SWIFT просто используйте import Podname

Вот и все, вы хорошо идти. Конечно, может случиться так, что вам нужно очистить проект или удалить папку с производными данными. Постройте и вы можете использовать его.

Если вы не используете быстрые капсулы,

Попробуйте удалить use_frameworks! на вашем подфиле.

Запустите установку pod на терминале.

Очистить и построить!

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

Поэтому, в моем случае, заголовочный файл моста не был проблемой, его на Podfile.

Я надеюсь, что это помогает!

Другие вопросы по тегам