Предоставление файла Swift из связанного каркасного проекта на верхний уровень - PullRequest
0 голосов
/ 31 января 2019

У меня есть XCWorkspace, который содержит отдельные каркасные проекты, структура проекта выглядит следующим образом

Проект AFramework (статический каркасный проект, проект AFramework связывает BFramework и добавляет его к целевым зависимостям)

Проект BFramework(статический каркасный проект, содержит публичный файл BClass.swift)

XCWorkspace Project that contains framework projects

Проект AFramework может получить доступ к файлу BClass.swift, как и ожидалось, но я также хочу предоставить BClassФайл .swift за пределами AFramework, предположим, что проект приложения связывает только AFramework, и в этом приложении, к которому я хочу получить доступ к файлу BClass.swift, что мне следует сделать, чтобы добиться этого, может быть полезным использование карты пользовательских модулей?

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

On demo app project B

Заранее благодарим за помощь

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Вы должны иметь возможность импортировать только BClass, например, так:

import class BFramework.BClass

Это должно работать, пока классы в рамках общедоступны.Это также должно работать для func, var, protocol, struct и enum (например, import struct BFramework.BStruct)

0 голосов
/ 08 февраля 2019

Наконец я нашел ответ.Чтобы иметь возможность выставлять открытые apis подмодуля, вы можете использовать атрибут @_explored import.

В моем случае использование «@_exported import BFramework» в файле AClass.swift приводит к тому, что публичные apis BFramework доступны и из приложения.сторона, которая просто связывает AFramework.

Обратите внимание, что она официально не выпущена.

Некоторые обсуждения этого можно найти здесь и здесь .

0 голосов
/ 31 января 2019

Я думаю, что вы либо добавляете B-фреймворк как зависимость, либо создаете класс на A-фреймворке, который предоставляет желаемую функциональность.

...