Подтвердить что ты не робот

Как импортировать структуру Swift во всем мире?

Я хочу иметь способ импортировать Swift Cocoapods глобально в каждом классе, как я могу это достичь?

Я пробовал много вещей, и они не работали. Вот несколько способов, которые я не пробовал и думал, возможно, если они найдут способ их работы:

Имейте общий оператор импорта, такой как UIKit, и поместите все там. (Изменить: это не удалось)

Как-то поместили рамки Swift в заголовок Obj-C и импортировали там материал.

4b9b3361

Ответ 1

Он сильно обескуражен в Swift, потому что это приведет к неявной связи между модулями.

Однако вы можете сделать определенный символ доступным во всем мире, объявив typealias в модуле, который импортирует другой модуль:

import ModuleName
public typealias ClassName = ModuleName.ClassName

Ответ 2

Существует способ нет. И это не ошибка, это особенность языка (пока что, говоря о Swift 2.2).

Swift использует модули (Apple представила их в Xcode 5 для Objective-C), и каждый файл является семантической единицей, поэтому вам нужно явно указать Xcode, какие модули подвергаются определенному файлу.

Не только поддержка вашего описанного поведения не поддерживается, но вы также не должны пытаться обойти его. Использование ненужных (неиспользуемых) модулей теоретически может производить медленный код (с учетом того, что компилятор использует эту информацию для своего процесса оптимизации).

Ответ 3

Вы должны иметь возможность импортировать его глобально, добавив @_exported перед импортом.

@_exported import Podname

Однако, как и предыдущие плакаты, это не рекомендуется.

Ответ 4

A причина, по которой вы не хотели бы этого делать:

Представьте себе, что если ваши фреймворки будут использовать одно и то же имя метода, это сделает вещи неоднозначными для компилятора. Компилятор не знает, какой метод он должен выполнить.

Чтобы узнать больше, посмотрите этот вопрос

Ответ 5

С Swift4:

  • Быть в проекте Swift
  • Хотите иметь еще один проект Swift по всему миру импортируется (и используется cocoapods)

Мне просто удалось это сделать, добавив следующую строку в мой заголовок:

#import <PodName/PodName-Swift.h>

Насколько хороша/плохая эта практика? Не уверен, но я просто хотел, чтобы в моем проекте были глобальные расширения. это сделало трюк.