Eu tenho um projeto Swift para o qual estou tentando importar estruturas baseadas em ObjC. O framework está localizado em um diretório sob o caminho do projeto e é referenciado pelo projeto no Xcode. Ele também é adicionado ao "Link Binary with Libraries" na página 'Build Phases' do projeto.
No entanto, por algum motivo, não consigo incluir a estrutura no arquivo Bridging-Header. Estou tendo o erro a seguir:
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'
Coisas que verifiquei:
- O "Install Objective-C Compatibility Header" está definido como "YES".
- Os Caminhos de pesquisa de cabeçalho incluem o caminho para as estruturas.
Tenho certeza de que estou perdendo alguma coisa, então se alguém tiver alguma pista, isso seria ótimo.
swift
xcode
bridging-header
Dia Kharrat
fonte
fonte
Header Search Paths
Respostas:
Encontrou uma solução:
SWIFT_OBJC_BRIDGING_HEADER
) deve ser definida no nível de destino, e NÃO no nível de projeto. Certifique-se de excluir o valor de configuração no nível do projeto.(para mim, parece um bug do Xcode, já que não sei por que ele corrige).
fonte
Eu tenho o mesmo problema. Mudei todas as minhas importações de
#import "HMSegmentedControl.h"
para,#import <HMSegmentedControl/HMSegmentedControl.h>
por exemplo.fonte
Tive que adicionar meu
lib
diretório em Caminhos de pesquisa do cabeçalho do usuário:No meu caso, o
lib
diretório contém o.a
arquivo -library e alguns arquivos de cabeçalho. Eles estão incluídos no arquivo de cabeçalho de ponte. No entanto, o compilador rápido não os encontraria. Somente quando adicionei${PROJECT_DIR}/lib
ao Caminho de pesquisa do cabeçalho do usuário, ele construiu o destino de teste.(Estou usando o Xcode 6.2 no Mavericks 10.9.5)
fonte
Encontramos a mesma mensagem de erro, com uma causa completamente diferente.
Configuração:
Quando adicionamos o segundo caso de teste do Swift, depois de uma limpeza (ou na máquina de um colega de equipe), vimos esse erro ao construir o alvo do teste de unidade.
Foi corrigido com a adição de uma classe Obj-C fictícia ao destino do teste de unidade.
fonte
Se estiver usando cocoapods, tente reinstalar os pods executando o seguinte comando.
fonte
pod install
parece ser necessário para quaisquer novas configurações adicionadas ...Isso de alguma forma funcionou para mim:
fonte
Este erro apareceu ao instalar com Cocoapods a biblioteca CocoaImageHashing. O problema era que os caminhos de busca estavam errados. Portanto, no nível de destino, em Build Settings -> Search Paths -> Header Search Paths, os caminhos correspondiam a pastas não existentes, por exemplo "$ {PODS_ROOT} / Headers / Public / CocoaImageHashing", quando a estrutura de pastas Headers / Public / não existe. Eu adicionei o caminho $ {PODS_ROOT} / CocoaImageHashing e o erro desapareceu.
fonte
Bem, é um pouco estranho, mas acho que você tem que adicionar um recurso à fase "Copiar recursos do pacote" de seu destino de teste para fazê-lo carregar todos os cabeçalhos de seu destino de aplicativo principal. No meu caso, acrescentei
main.storyboard
e resolveu o erro.fonte
Isso aconteceu comigo depois de adicionar / renomear as configurações atuais e faz sentido.
Cada configuração usa um conjunto de configurações gerado por cocoapods, portanto, essas coisas precisam corresponder.
Portanto, se você adicionar / renomear configurações, elas precisarão usar os conjuntos de configurações corretos e, para isso, a execução
pod install
fará isso.fonte
Se ajuda alguém.
No meu caso, meus arquivos obj-c foram adicionados tem uma pasta de referência (as pastas azuis em xcode) e o cabeçalho não conseguiu localizá-los. Apenas adicionei os arquivos, não a pasta, do localizador ao xcode e resolvido.
fonte
Eu tive o mesmo problema. Para mim, o motivo era que eu estava usando o mesmo cabeçalho de ponte para meu aplicativo e minha extensão de hoje. Minha extensão Today não inclui o Parse, mas como foi definida no cabeçalho de ponte, estava tentando procurá-la. Eu criei um novo cabeçalho de ponte para minha extensão Today e o erro desapareceu.
fonte
Minha estrutura estava funcionando antes e de repente parou de funcionar, e nenhuma dessas respostas estava funcionando para mim. Removi a estrutura em Build Phases> Link Binary With Libraries e a adicionei novamente. Começou a trabalhar novamente.
fonte
Tive um problema e resolvi-o depois de passar 2 horas para encontrá-lo. Meu ambiente conforme abaixo:
cocoapod 0.39.0
Swift 2.x
XCode 7.3.1
Passos:
fonte
Eu tinha acabado de duplicar um esquema existente e adicionado outra configuração ao projeto. Tive que adicionar uma configuração com o mesmo nome ao projeto do framework para que ele também construísse na mesma
DerivedData/($AppName)/Build/Products/($CONFIGURATION_NAME)
pasta. Caso contrário, o arquivo .framework não será criado e, portanto, não poderá ser importado.fonte
Eu tive o mesmo problema hoje ao tentar usar um pod escrito em Objective-C no meu projeto Swift, nenhuma das soluções acima parecia funcionar.
No podfile que
use_frameworks!
escrevi. Comentar essa linha e depois executarpod install
novamente resolveu esse problema para mim e o erro foi embora.fonte
(Atualizado em 27 de maio de 2017)
Xcode 8. Projeto Swift - importando Objetivo C.
Coisas para saber:
fonte
Eu tive um problema semelhante e apenas uma solução funcionou para mim. Tentei tudo o que foi sugerido e sabia que defini meu cabeçalho de ponte corretamente, porque tinha outra biblioteca funcionando.
Quando copiei a biblioteca (arraste e solte) para o projeto, sem Cocoapods, só depois pude importar cabeçalhos sem erros.
Eu usei a biblioteca do Facebook / Shimmer.
fonte
Tive um problema semelhante com os pods. Basicamente tentando executar meus testes de IU, o Xcode reclamou da falta de pods. A solução para isso era muito mais simples do que qualquer outra descrita acima:
Trabalhando!
Eu encontrei em um tópico: https://github.com/CocoaPods/CocoaPods/issues/2695
Parece um bug para os frutos do cacau, mas posso ver os motivos pelos quais pode ser um caso complicado.
fonte
No meu caso só tive que sair do simulador ...
fonte
Limpe o projeto, Limpe a pasta de construção, Reinicie o Xcode. Acabei de remover o caminho no projeto, vá para> Configurações de compilação> Pesquisar a palavra-chave. Compilador Swift - Geral -> Cabeçalho de ponte Objective-C funcionou para mim.
fonte
Agosto de 2019
No meu caso, eu queria usar um protocolo Swift em um arquivo de cabeçalho Objective-C que vem do mesmo destino e, para isso, precisei usar uma declaração de encaminhamento do protocolo Swift para referenciá-lo na interface Objective-C. O mesmo deve ser válido para usar uma classe Swift em um arquivo de cabeçalho Objective-C. Para usar a declaração de encaminhamento, consulte o exemplo a seguir nos documentos em Incluir classes Swift em cabeçalhos Objective-C usando declarações de encaminhamento :
fonte