Почему мой простой заголовок c моста не может найти файл BraintreeCore.h?

Это меня очень расстраивает. Я интегрировал библиотеку Braintree в несколько проектов iOS, прежде чем использовать ее в Swift, и у меня никогда не было проблем, но в настоящее время я не могу заставить ее работать.

Я следовал/повторял инструкции здесь снова и снова:

https://developers.braintreepayments.com/start/hello-client/ios/v4

В частности, я поместил модуль «Braintree» в свой файл Pod, запустил установку модуля и обновление модуля и убедился, что библиотека Braintree теперь появляется в каталоге модулей.

Я тоже трижды переделывал заголовок моста, стараясь установить цель для своего приложения. Я также снова и снова проверял, что я установил заголовок моста target c в моих настройках сборки в правильный файл, и он успешно создал заголовки моста для других файлов target c. К сожалению, следующие строки просто не работают в заголовке моста:

#import "BraintreeCore.h"
#import "BraintreeUI.h"

Они оба дают ошибку компиляции одного и того же типа, говоря, что файл BraintreeCore.h не найден.

Я смог сделать следующее без получения ошибки:

#import "Pods/Braintree/BraintreeCore/Public/BraintreeCore.h"

Но когда я пытаюсь сделать то же самое для BraintreeUI.h, вот так:

#import "Pods/Braintree/BraintreeUI/Public/BraintreeUI.h"

Он связывает меня с файлом BraintreeUI.h и сообщает мне, что файл «BraintreeCore/BraintreeCore.h» не найден об этой строке в файле BraintreeUI.h:

#import <BraintreeCore/BraintreeCore.h>

Что я делаю не так?? это должно быть просто, но это бесит меня уже более 12 часов.


person HelloCoding    schedule 28.07.2016    source источник


Ответы (2)


Полное раскрытие: я работаю в Braintree над iOS SDK.

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

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

"${PODS_ROOT}/Headers/Public/Braintree"

Если это не так, я подозреваю, что CocoaPods плохо работает с вашим проектом Xcode. Вы можете попробовать деинтеграцию и реинтеграцию. Используя CocoaPods 1.0, вы сможете выполнить pod deintegrate, убедиться, что ваша папка Pods/ удалена, и запустить pod install. В худшем случае вы можете просто начать с совершенно нового проекта Xcode и перетащить свои старые исходные файлы (хотя это может быть большой проблемой).

person Richard Shin    schedule 28.07.2016

Вы нашли решение, HelloCoding? Столкнулся с той же проблемой...

В моем случае я заметил, что в документации Braintree говорится: «Если ваше приложение написано на Swift, но ваша интеграция с CocoaPods не использует динамические фреймворки, вы можете импортировать Braintree в связующем заголовке».

Поэтому я удалил импорт из файла моста и включил «use_frameworks!» инструкция в моем подфайле вместо этого.

Я понятия не имею, является ли это одобренным способом решения проблемы, но, похоже, это сработало для меня.

person Ken    schedule 06.08.2016