Объект C Преодоление заголовка для фреймворков

Я создал структуру, которая требует рамки sqlite3. Как добавить заголовок объекта Objective C для моей инфраструктуры, который импортирует sqlite3 в мой файл Swift?

У меня уже есть заголовочный файл для моего проекта, но не для моей рамки.

Ответ 1

Я нашел параметр Objective-C Bridging Header в целевых настройках сборки. Он был скрыт по умолчанию. Проверьте все вместо Basic.

В последних версиях Xcode это решение даст ошибку Using bridging headers with framework targets is unsupported.

Обходной путь, который я использовал, состоит в том, чтобы сделать C-заголовок общедоступным в инспекторе файлов и импортировать его в MyFramework.h, как в этом примере:

#import <MyFramework/MyObjectiveC.h>

Как изменить C-заголовок на общедоступный

Откройте свой C-заголовок и просмотрите инспектор, щелкнув в правом верхнем углу. Чтобы просмотреть инспектор файлов, щелкните значок файла в правом верхнем углу.

введите описание изображения здесь

Ответ 2

просто импортируйте свою инфраструктуру sqlite3 в файл моста objective-c. Затем вы автоматически можете использовать его в Swift.

Apple Docs:

Взаимодействие - это возможность взаимодействия между Swift и objective-c в любом направлении, позволяя вам получать и использовать фрагменты кода, написанные на одном языке в файле другого языка. По мере того, как вы начинаете интегрировать Swift в рабочий процесс разработки приложений, неплохо понять, как вы можете использовать интероперабельность, чтобы переопределять, улучшать и улучшать способ написания приложений Cocoa. Одним из важных аспектов взаимодействия является то, что он позволяет работать с API objective-c при написании кода Swift. После импорта рамки objective-c вы можете создавать экземпляры из нее и взаимодействовать с ними, используя собственный синтаксис Swift.

EDIT. Вы даже можете импортировать фреймворк objective-c или структуру Swift или фреймворк смешанного языка только в ваш быстрый файл с помощью

import yourFramework

Apple Docs:

Импорт внешних фреймворков

Вы можете импортировать внешние фреймворки с чистым Objective-Ccodebase, чистой кодовой базой Swift или кодовой базой смешанного языка. процесс импорта внешней структуры одинаковый, независимо от того, Framework написана на одном языке или содержит файлы из обоих языки. Когда вы импортируете внешнюю структуру, убедитесь, что Определяет настройку сборки модуля для импортируемой вами структуры к Да.

Вы можете импортировать фреймворк в любой файл Swift в другой с использованием следующего синтаксиса:

СВИФТ

import FrameworkName

Вы можете импортировать фреймворк в любой файл objective-c.m внутри другой целевой синтаксис:

@import FrameworkName;