У меня есть проект Swift, для которого я пытаюсь импортировать фреймворки на основе ObjC. Фреймворк находится в каталоге по пути к проекту и на него ссылается проект в Xcode. Он также добавлен в раздел «Связать двоичный файл с библиотеками» на странице проекта «Фазы сборки».
Однако по какой-то причине я не могу включить фреймворк в файл Bridging-Header. Я получаю следующую ошибку:
BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'
Что я проверил:
- «Заголовок совместимости Install Objective-C» установлен на «YES».
- Пути поиска заголовков включают путь к фреймворкам.
Я уверен, что что-то упустил, так что, если у кого-то есть какие-то подсказки, было бы здорово.
swift
xcode
bridging-header
Диа Харрат
источник
источник
Header Search Paths
Ответы:
Нашел решение:
SWIFT_OBJC_BRIDGING_HEADER
) должен быть установлен на целевом уровне, а НЕ на уровне проекта. Обязательно удалите значение настройки на уровне проекта.(мне это кажется ошибкой Xcode, так как я не знаю, почему он ее исправляет).
источник
У меня такая же проблема. Например, я изменил весь свой импорт с
#import "HMSegmentedControl.h"
на#import <HMSegmentedControl/HMSegmentedControl.h>
.источник
Мне пришлось добавить свой
lib
каталог в Пути поиска заголовков пользователей:В моем случае
lib
каталог содержит.a
файл -library и несколько файлов заголовков. Они включены в файл заголовка моста. Однако быстрый компилятор их не нашел. Только когда я добавил${PROJECT_DIR}/lib
в путь поиска заголовка пользователя, он создал тестовую цель.(Я использую Xcode 6.2 на Mavericks 10.9.5)
источник
Мы столкнулись с тем же сообщением об ошибке, но с совершенно другой причиной.
Настроить:
Когда мы добавили второй быстрый тестовый пример после очистки (или на машине товарища по команде), мы увидели эту ошибку при построении цели модульного теста.
Это было исправлено путем добавления фиктивного класса Obj-C к цели модульного теста.
источник
Если вы используете cocoapods, попробуйте переустановить модули, выполнив следующую команду.
источник
pod install
кажется, требуется для добавления любых новых конфигураций ...Это как-то помогло мне:
источник
Эта ошибка появилась при установке с Cocoapods библиотеки CocoaImageHashing. Проблема заключалась в том, что пути поиска были неправильными. Таким образом, на целевом уровне в настройках сборки -> Пути поиска -> Пути поиска заголовков, пути соответствовали несуществующим папкам, например "$ {PODS_ROOT} / Headers / Public / CocoaImageHashing", когда структура папок Headers / Public / не существует. Я добавил путь $ {PODS_ROOT} / CocoaImageHashing и ошибка исчезла.
источник
Что ж, это немного странно, но я думаю, вам нужно добавить ресурс на фазу «Копировать ресурсы пакета» вашей тестовой цели, чтобы он загружал все заголовки из вашего основного целевого приложения. В моем случае я добавил,
main.storyboard
и он позаботился об ошибке.источник
Это случилось со мной после добавления / переименования текущих конфигураций, и это имеет смысл.
Каждая конфигурация использует набор конфигураций, созданный cocoapods, поэтому эти вещи должны совпадать.
Поэтому, если вы добавляете / переименовываете конфигурации, они должны будут использовать правильные наборы конфигурации, и для этого запуск
pod install
будет делать это.источник
Если кому-то поможет.
В моем случае мои файлы obj-c были добавлены в справочную папку (синие папки в xcode), и заголовок не смог их найти. Просто добавил файлы, а не папку из искателя в xcode и решил.
источник
У меня такая же проблема. Для меня причина заключалась в том, что я использовал один и тот же заголовок-мост как для моего приложения, так и для моего сегодняшнего расширения. My Today Extension не включает синтаксический анализ, но поскольку он был определен в заголовке моста, он пытался его найти. Я создал новый мостовой заголовок для своего расширения Today Extension, и ошибка исчезла.
источник
Моя структура работала раньше и внезапно перестала работать, и ни один из этих ответов не работал у меня. Я удалил фреймворк в Build Phases> Link Binary With Libraries и снова добавил его. Снова заработал.
источник
У меня была проблема, и я решил ее, потратив 2 часа на поиск. Моя среда, как показано ниже:
коконожа 0,39,0
быстрый 2.x
XCode 7.3.1
Шаги:
источник
Я только что продублировал существующую схему и добавил в проект другую конфигурацию. Мне пришлось добавить конфигурацию с тем же именем в проект фреймворка, чтобы он также располагался в той же
DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
папке. В противном случае файл .framework не будет создан и, следовательно, не может быть импортирован.источник
Сегодня я столкнулся с той же проблемой, когда пытался использовать модуль, написанный на Objective-C, в моем проекте Swift, ни одно из вышеперечисленных решений, похоже, не сработало.
В подфиле я
use_frameworks!
написал. Комментируя эту строку, а затемpod install
снова запустив ее, я решил эту проблему, и ошибка исчезла.источник
(Обновлено 27 мая 2017 г.)
Xcode 8. Swift Project - импорт Objective C.
Что нужно знать:
источник
У меня была аналогичная проблема, и для меня сработало только одно решение. Я пробовал все, что предлагалось, и знал, что правильно настроил заголовок моста, потому что у меня работала какая-то другая библиотека.
Когда я копировал библиотеку (перетаскивая) в проект, без Cocoapods, только после этого я мог импортировать заголовки без ошибок.
Я использовал библиотеку facebook / Shimmer.
источник
У меня была аналогичная проблема со стручками. В основном, пытаясь запустить мои тесты пользовательского интерфейса, Xcode жаловался на отсутствие модулей. Решение было намного проще, чем любое из описанных выше:
Работает!
Нашел в ветке: https://github.com/CocoaPods/CocoaPods/issues/2695
Звучит немного как ошибка для стручков какао, но я вижу причины, по которым это может быть непростой случай.
источник
В моем случае мне просто пришлось выйти из симулятора ...
источник
Очистить проект, очистить папку сборки, перезапустить Xcode. Я просто удаляю путь в проекте goto> Настройки сборки> Поиск по ключевому слову. Swift Compiler - General -> Objective-C Bridging header работал у меня.
источник
Август 2019 г.
В моем случае я хотел использовать протокол Swift в файле заголовка Objective-C, который исходит от той же цели, и для этого мне нужно было использовать предварительное объявление протокола Swift, чтобы ссылаться на него в интерфейсе Objective-C. То же самое должно быть справедливо для использования класса Swift в файле заголовка Objective-C. Чтобы использовать предварительное объявление, см. Следующий пример из документации в разделе « Включить классы Swift в заголовки Objective-C с использованием прямых объявлений» :
источник