Seguindo as instruções, criei um cabeçalho de ponte e adicionei ao meu projeto. Infelizmente, ocorreu o seguinte erro:
: 0: erro: não foi possível importar o cabeçalho do Objective-C '--- caminho - para --- o cabeçalho / .... h'
Nas configurações de compilação, adicionei a string do caminho de pesquisa do cabeçalho ao local do cabeçalho da ponte, mas nada ajudou.
Alguém já experimentou este problema?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
fonte
fonte
Respostas:
Tenha cuidado para adicionar o arquivo à pasta que seu erro está reclamando! Cometi o mesmo erro: se você criar o arquivo a partir do Xcode, ele irá para a pasta: Projeto-> Projeto-> Cabeçalho.h
E o Xcode está procurando por Project-> Header.h
Isso significa que você precisa colocar o arquivo dentro da pasta do projeto (ProjectName-> ProjectNameFolder)!
Espero que ajude ;)
ATUALIZADO: Não sei se entendi o que você quer dizer, mas tente resolver o seu problema:
1. Exclua todos os seus arquivos de ponte que você criou até agora.
2. Selecione a pasta principal do projeto e clique em novo arquivo-> iOS-> arquivo de cabeçalho.
3. Escreva suas importações no arquivo de cabeçalho criado.
4. Selecione o projeto em Xcode-> Build Settings, digite no campo de pesquisa: ponte e coloque na chave SWIFT_OBJC_BRIDGING_HEADER o nome do seu arquivo de cabeçalho ou o caminho para ele!
Se você seguir estas etapas, seu arquivo de cabeçalho será criado no local correto!
: D Espero que ajude!
fonte
No meu caso, isso foi realmente um erro como resultado de uma referência circular. Eu tinha uma classe importada no cabeçalho da ponte e o arquivo de cabeçalho dessa classe estava importando o cabeçalho rápido (
<MODULE_NAME>-Swift.h
). Eu estava fazendo isso porque no arquivo de cabeçalho Obj-C eu precisava usar uma classe declarada no Swift, a solução era simplesmente usar o@class
declarativo.Então, basicamente, o erro dizia "Falha ao importar o cabeçalho da ponte", o erro acima dizia que o
<MODULE_NAME>-Swift.h
arquivo não foi encontrado, acima disso houve um erro apontando para um arquivo de cabeçalho Obj-C específico (ou seja, um View Controller).Ao inspecionar esse arquivo, notei que ele tinha o -Swift.h declarado dentro do cabeçalho. Mover essa importação para a implementação resolveu o problema. Então, eu precisava usar um objeto, vamos chamá-lo
MyObject
definido no Swift, então simplesmente mudei o cabeçalho para dizerfonte
Encontre o caminho em:
Configurações de compilação / Swift Compiler Generation Geração de código / Objective-C Bridging Header
e exclua esse arquivo. Então você deve ficar bem.
fonte
Provavelmente isso afetará apenas uma pequena porcentagem de pessoas, mas no meu caso, meu projeto estava usando CocoaPods e um desses pods tinha uma subespecificação com seus próprios CocoaPods. A solução foi usar importações de ângulo completo para fazer referência a qualquer arquivo nos sub-pods.
Ao invés de
fonte
Para eu excluir os dados derivados corrigidos, notei que mesmo se eu fizer o check-out de um commit antigo, o mesmo problema acontece.
Você pode acessar essa opção no formulário Janela-> Projetos.
fonte
Para mim, foi porque esqueci de adicioná-lo às configurações de compilação do alvo.
fonte
"precisamos informar ao Xcode onde procurar os arquivos de cabeçalho que listamos em nosso cabeçalho de ponte . Encontre a seção Caminhos de pesquisa e altere a configuração no nível do projeto para Caminhos de pesquisa de cabeçalho do usuário , adicionando uma entrada recursiva para os 'Pods' diretório: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
fonte
Eu também experimentei esse problema e, infelizmente, é apenas um bug no SDK + Xcode. Conversei com um engenheiro da WWDC sobre este e alguns outros problemas que estava tendo com o CloudKit. Esses erros serão abordados na próxima semente do Xcode.
É a parte divertida do uso de software beta.
fonte
para outros que têm problemas para adicionar classe rápida ao projeto objetivo-c. é isso que funciona para mim:
e é isso. agora crie a classe swift no seu código como se fosse objetivo-c.
fonte
Importei alguns arquivos dos arquivos de cabeçalho bridgin dos cocoapods, não de maneira adequada.
Em vez de importar
eu escrevi
E este foi o meu erro ENORME
fonte
Adicione um arquivo Objective-C temporário ao seu projeto. Você pode dar o nome que quiser.
Selecione Sim para configurar um cabeçalho de ponte Objective-C.
Exclua o arquivo Objective-C temporário que você acabou de criar.
No arquivo projectName-Bridging-Header.h recém-criado, adicione esta linha:
'#import <GoogleMaps / GoogleMaps.h>'
Edite o arquivo AppDelegate.swift:
Siga o link para obter uma amostra completa
fonte
Para mim, não foi selecionar 'Copiar itens, se necessário' no caminho de destino ao adicionar a estrutura. Basta adicionar novamente a estrutura com esta opção selecionada.
fonte
Após alguns dias iniciais de luta, finalmente consegui integrar com êxito a inscrição do Facebook no meu aplicativo iOS. Aqui estão as etapas (suponho que você já tenha instalado o Facebook SDK v4.1 ou superior em suas máquinas):
Adicione informações na lista como mencionado aqui
Crie seu aplicativo. E ai! sem erros de tempo de compilação.
fonte
Eu tenho o mesmo problema por motivos diferentes. Aqui está o meu caso: eu construo um projeto que precisa ser incluído no menu de slides. Estou usando a SWRevealViewController lib para abordar essa questão.
Quando importo os arquivos da biblioteca, adiciono a subpasta (SWRevealViewController) em Supporting Files para arquivos .h && .m, ele aciona dois erros, não é possível importar a ponte e o SWRevealViewController.h não foi encontrado.
Como eu conserto
quando movo os arquivos diretamente para os arquivos de suporte (exclua a subpasta), o SWRevealViewController.m é adicionado automaticamente ao Build Fhases -> Compile Sources e o problema desaparece
fonte
Tive esse tipo de erro ao adicionar uma extensão Today ao meu aplicativo. O destino de construção da extensão foi gerado com o mesmo nome do cabeçalho de ponte que o destino de construção do meu aplicativo. Isso levou ao erro, porque a extensão não vê os arquivos listados no cabeçalho da ponte do meu aplicativo.
A única coisa que você precisa é excluir ou alterar o nome do cabeçalho da ponte para a extensão e tudo ficará bem.
Espero que isso ajude.
fonte
Na verdade, criei um arquivo OSX Source Objective C vazio no projeto (onde estão todos os meus arquivos swift).
Adicionei as importações e excluí o arquivo .m .
fonte
Entre as outras correções, ocorreu o erro ao tentar fazer Produto-> Arquivar. Acontece que eu tinha isso:
Depois de colocá-lo na última linha, funcionou.
fonte
Teve um problema semelhante que não pôde ser resolvido por nenhuma solução acima. Meu projeto usa CocoaPods. Percebi que, juntamente com os erros, recebi um aviso com a seguinte mensagem:
Portanto, a solução foi bastante simples. Para o projeto Pods, altere o sinalizador Build Active Architecture Only para No e o erro original desapareceu.
fonte
Defina Precompile Bridging Header como Não corrija o problema para mim.
fonte