ошибка при использовании cocoapods use_frameworks! БЫСТРЫЙ

У меня был чистый быстрый проект с использованием нескольких коконоподов: Parse, AFNetworking и RESideMenu. Мне нужно использовать модуль STZPopupView, поэтому я обновил cocoapods последней версией:

gem install cocoapods

Затем я перезапустил его для своего проекта:

pod install

Из-за этой ошибки:

[!] Pods written in Swift can only be integrated as frameworks; this feature is still in beta. Add `use_frameworks!` to your Podfile or target to opt into using it.

Я обновил свой подфайл, добавив "use_frameworks!"

Мой подфайл сейчас:

# Uncomment this line to define a global platform for your project
# platform :ios, '8.0'
use_frameworks!

source 'https://github.com/CocoaPods/Specs.git'

target 'isam' do
pod 'RESideMenu', '~> 4.0.7'
pod 'AFNetworking', '~> 2.5'
pod 'Parse', '~> 1.6'
pod 'STZPopupView', '~> 1.0'
end

target 'isamTests' do

end

Поскольку при сборке у меня есть 2 ошибки:

  • Файл "RESideMenu.h" не найден
  • Не удалось импортировать заголовок моста ".... / isam / Swift-Bridging-Header.h"

Больше я ничего не менял в своем проекте.

Мой Swift-Bridging-Header.h не меняется:

#ifndef isam_Swift_Bridging_Header_h
#define isam_Swift_Bridging_Header_h

#import <Parse/Parse.h>
#import <RESideMenu.h>

#endif

В моих настройках сборки у меня есть:

настройки сборки

Я думаю, это из-за "use_frameworks!" в моем подфиле, но я не знаю, как использовать все свои поды для правильной сборки приложения.

РЕДАКТИРОВАТЬ :

Вот точные ошибки:

/path_of_my_project/Swift-Bridging-Header.h:12:9: error: 'RESideMenu.h' file not found
#import <RESideMenu.h>
        ^
<unknown>:0: error: failed to import bridging header '/path_of_my_project/Swift-Bridging-Header.h'

person cmii    schedule 07.07.2015    source источник
comment
Удалите эти операторы из файла заголовка моста: #ifndef isam_Swift_Bridging_Header_h & #define isam_Swift_Bridging_Header_h и endif. Он должен работать.   -  person iDilip    schedule 07.07.2015
comment
@ dilip.ajm Насколько я могу судить, #ifndef просто предотвращает его многократный импорт.   -  person Andrew    schedule 07.07.2015
comment
@SantaClaus Я пробовал с кавычками и без них, но не работает   -  person cmii    schedule 07.07.2015


Ответы (3)


На самом деле я столкнулся с той же проблемой. Вы можете попробовать следующее: http://www.innerexception.com/2015/05/cocoapods-useframeworks-means-bridging.html

При использовании use_frameworks! в CocoaPods все ваши поды будут использоваться в качестве фреймворков, а не только быстрые поды. Таким образом, для этого вам не нужен промежуточный заголовок. Просто импортируйте свои модули во все нужные вам быстрые файлы. В вашем примере вы должны написать: import RESideMenu

person DasDany    schedule 15.07.2015
comment
Это исправило это для меня. Однако я также получил дублирование объявления интерфейса, которое я исправил, изменив мои файлы Objective-C, которые импортировали заголовки из фреймворков, на использование глобальных включений вместо локальных: #import "Framework.h" на #import <Framework/Framework.h>. - person Scott Fister; 18.05.2016

Попробуйте удалить isam / из заголовка моста Objective-C и оставить только Swift-Bridging-Header.h

Исходя из личного опыта, у CocoaPods все еще есть некоторые проблемы при объединении фреймворков Swift и Objective C. Вы можете использовать Alamofire, который почти эквивалентен AFNetworking для быстрого.

Надеюсь это поможет.

Изменить: также зачем использовать Objectice-C Parse быстро, если вы можете напрямую использовать библиотеки swift.

person mosn    schedule 07.07.2015
comment
Удалить isam / не работает. Действительно, мне нужен модуль STZPopupView, потому что я хотел бы настроить uialertcontroller: stackoverflow.com/questions/31254931/ - person cmii; 08.07.2015
comment
хорошо, я смог успешно построить проект, используя вашу спецификацию. Единственное, что мне нужно было изменить, - это изменить этот #import ‹RESideMenu / RESideMenu.h› Также попробуйте удалить целевой 'isam' do из файла модуля и убедитесь, что все команды терминала модуля выполняются внутри каталога проекта. - person mosn; 08.07.2015
comment
когда вы сказали удалить целевой isam, вы просите меня полностью удалить строку target 'isam' do / end в моем подфайле? - person cmii; 08.07.2015
comment
target 'isam' do следует удалить из файла модуля, но перед этим нужно попросить удалить его из местоположения файла заголовка в настройках сборки. У меня этого нет, и мне никогда не приходилось включать каталог проекта в настройки сборки. Я бы порекомендовал просто добавить Header.h, чтобы создать новый файл прослушивания с именем Header, чтобы упростить задачу (такое наименование - не лучшая практика, но может помочь вам сузить круг и найти проблему) - person mosn; 08.07.2015
comment
какая у вас версия стручков какао? - person cmii; 08.07.2015
comment
Следую вашим инструкциям, тоже не работает :( Я копирую точные ошибки в свой вопрос. - person cmii; 08.07.2015
comment
этот stzpopupview - не что иное, как вы могли бы достичь с помощью обычного модально представленного контроллера представления - person longbow; 08.07.2015
comment
Swift по-прежнему гораздо более подвержен ошибкам, чем библиотеки Obj-C. - person brainray; 07.09.2015

Я была такая же проблема. Например, я изменил весь свой импорт с #import "RESideMenu.h" на #import <RESideMenu/RESideMenu.h>.

person jamesthakid    schedule 12.02.2016