2014-10-16 2 views
10

Я использую стороннюю среду Swift в своем приложении Swift очень часто и хотел бы использовать его без необходимости писать import ModuleName в каждом файле Swift снова и снова.Неявно импортировать определенный модуль Swift

Есть ли способ указать импорт по умолчанию, как это было возможно в Objective-C, используя файл .pch?

Я уже проверил установки Xcode и swiftc флаги, но никто из них не предлагает эту функцию.

ответ

32

На самом деле есть очень простое решение, я мог бы подумать о ранее ...

Просто добавьте следующую строку своего приложения проект Objective-C мостовой заголовка:

@import ModuleName; 

Swift будет забрать его тоже! Нет необходимости в import ModuleName в каждом файле Swift, где вы собираетесь использовать модуль.

+0

Работает как шарм. Благодаря! –

+1

не будет работать, если создаваемая цель представляет собой структуру Swift, зависящую от других модулей, поскольку заголовки мостов не разрешены. –

+3

@MaxMacLeod. Да, это работает только для целей приложения. Для фреймворков нет никакой функциональности или обходного пути для достижения того же результата. Но я привык к этому :) – fluidsonic

3

Нет, нет Swift-аналога для Objective-C .pch файлов.

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

+2

Спасибо за ответ mattt. Я думаю, вы правы, что нет стандартного способа сделать это в Swift. Но я нашел способ добиться того же результата, просто используя '@ import' в заголовке моста ObjC! – fluidsonic

+0

Swift имеет файлы '.swiftmodule', которые являются импортируемыми, если один из них предоставляет его имя в качестве значения аргумента' -I' 'swiftc'. [SWM (Swift Modules)] (http://github.com/jankuca/swm) может многое помочь с этим. –

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