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"

to

#import "SSKeychain.h"

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

Заголовок моста

Заголовок моста Objective-c

Пути поиска фреймворка

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

Пути поиска фреймворка

Связанные платформы

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

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

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

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

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

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

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

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


person Johnathon Sullinger    schedule 28.06.2015    source источник
comment
Вы пытались обновить какао-боб? Я имею в виду gem install какао-бобы, потому что кажется, что я столкнулся с той же проблемой, и это мне поможет!   -  person Max Tymchii    schedule 08.01.2016


Ответы (3)


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

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

person NeoNacho    schedule 29.06.2015
comment
Я не уверен, как это сделать, извините. Я удалил заголовок моста и ссылку на него в настройках сборки. Swift по-прежнему не может найти фреймворк LiveSDK или SSKeychain. Когда я использую import SSKeychain, мне выдается ошибка компилятора No such model 'SSKeychain'. - person Johnathon Sullinger; 30.06.2015
comment
Это закончилось исправлением моей проблемы. Когда я получил эти ошибки, я пошел и удалил use_frameworks! из моего подфайла, чтобы просто вернуться к статическому, а не к динамическому. Как только я вернул это, удалил мост и добавил import в свой класс, все сошлось идеально. Спасибо за помощь. - person Johnathon Sullinger; 30.06.2015
comment
Я был бы очень благодарен, если бы один из вас мог продемонстрировать решение с большей ясностью... Я не знаю, смогу ли я полностью избавиться от моего связующего заголовка, потому что я интегрирую некоторые библиотеки, такие как parse.com, написанные на Objective- С тоже. - person Alexei S.; 06.07.2015
comment
Я борюсь с этим. Я могу добавить @import SSKeyChain, построить, заархивировать, запустить и все такое, но у меня все еще есть красная строка под оператором импорта, говорящая, что модуль SSKeyChain не найден? Как это возможно, когда это работает? - person nickdnk; 09.03.2016

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

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

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

person Simon C.    schedule 18.11.2016

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

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

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

Чисти и строй!

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

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

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

person Azel    schedule 17.08.2016