2016-01-25 3 views
0

У меня есть проект объектива-c, и я добавил в него быстрые файлы. Я создал файл моста и импортировал быстрый файл в некоторые файлы заголовков без проблем.мостовой быстрый и объективный-c

Но мне нужно импортировать некоторые файлы заголовков в swift-файлы, добавив их в файл "<project-name>-Bridging-Header.h".

Если я поместил заголовочный файл в этот файл моста, и этот заголовочный файл был импортирован swift-файл раньше; Xcode сообщит мне сообщение об ошибке: «файл не найден» для файла быстрого файла.

т.е.

  • Я название проекта под названием: "ProjectBlaBla"
  • я заголовка файла с именем "readingPage.h"
  • У меня есть быстрый файл под названием: "readingSwift.swift"
  • имя
  • Свифт мостового файла: "ProjectBlaBla-Swift.h"
  • Я создал файл заголовка моста: "ProjectBlaBla-Bridging-header.h"
  • Я импортировал «проект BlaBla-Swift.h "в файле" readPage.h "без проблем и использовать быстрые классы внутри object-c
  • Когда я импортирую« readPage.h »в« ProjectBlaBla-Bridging-Header.h », я получил ошибку сообщение в «readPage.h» сказано: "ProjectBlaBla-Swift.h file not found"

    любые предложения?

благодарит

ответ

3

Вы не можете ссылаться -Swift.h файлы прямо или косвенно в -Bridging-header.h файлов.

Если вы откроете -Swift.h, вы увидите линию рядом с верхней частью, в моем случае строка 99: #import "/Users/.../...-Bridging-Header.h", что означает, что -Swift.h уже импортирует -Bridging-Header.h, поэтому импорт обратно создает круговую зависимость ,

Чтобы избежать этого, любой заголовок, который вы импортируете в -Bridging-Header.h, должен использовать прямые ссылки на классы или протоколы Swift, которые он использует, как описано в answers to this question.

Короче говоря, если readingPage.h использует Swift класс с именем MySwiftClass вы должны:

  1. Удалите все ссылки на -Swift.h из readingPage.h.
  2. Импорт -Swift.h в readingPage.m
  3. Вставьте @class MySwiftClass; в readingPage.h перед использованием класса, выпускающей Objective-C знать, что такой класс существует и объявлен в другом месте.
+0

спасибо, он работает –

0

Два варианта

  1. Импорт "ProjectBlaBla-Swift.h" внутри файла "readingPage.m" вместо файла "readingPage.h"
  2. Создать новый файл PCH с именем «Prefix.pch» и импортировать «ProjectBlaBla-Swift.h» в файл «Prefix.pch».

Примечание: Prefix.pch представляет собой предварительно скомпилированный заголовок, который ускоряет компиляцию. Вам не нужно повторно импортировать файлы, импортированные в файл prefix.ch.

0

Проверьте правильность пути соединительной перемычки. Слева выберите название проекта -> TARGETS -> Настройки сборки -> поиск заголовка объекта Objective-C. См. Фото ниже.

Bridging Header

Смежные вопросы