2016-01-15 2 views
0

Есть ли способ создать класс, доступный как для приложений iOS, так и для WatchOS?Класс доступен для приложений iOS и WatchOS?

Я хочу создать источник данных из одного статического класса. Я не хочу, чтобы класс жил внутри приложения iOS или расширения Watchkit. Но мне все равно нравится быть внутри общего проекта.

Если это невозможно, я полагаю, что класс, живущий внутри приложения iOS, лучше? Оттуда я могу перенести его данные в приложение WatchOS.

+2

Я не совсем уверен если я понял вашу проблему, но я думаю, что в том числе этот файл и для iOS, и для WatchOS будет выполнять эту работу. – Gandalf

+0

Когда я создаю класс в приложении iOS, приложение-часы не видит его. – 4thSpace

+0

Просто отметьте опцию расширения часов под инспектором – lzl

ответ

2

Отметьте опцию расширения часов под «целевым членством» в «файл инспектор», чтобы включить этот файл под расширением :)

1

Создать основу для всех классов, которые вы хотели бы оба приложения использовать и импортировать эту структуру когда вы хотите их использовать

+0

Это было бы хорошим решением, в котором есть много классов, разделяемых между ними. В случае одного (или небольшого числа) классов почти наверняка не стоит накладных расходов. –

+0

Да, вы правы. –

1

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

Кроме того, поскольку некоторые классы, функции и т.д. не доступны в WatchKit, вы можете добавить preproccessor макрос настройки сборки на выполнение задачи, которые вы можете использовать, чтобы определить фрагменты кода, которые доступны только в Часы или iPhone.

Вы можете определить макрос препроцессора в вашем целевом iPhone «Настройки сборки»> «Предварительная обработка» (убедитесь, что «все» выбрано в верхнем левом углу, а не только «базовый»). See screen shot for preprocessor macro definition

После того, как вы что определены, вы можете использовать их в вашем коде, используя #ifdef препроцессора:

#ifdef IS_IPHONE 
// iphone specific code here... 
#endif 

UPDATE:

Как уже говорилось в комментарии ниже, для стрижа вы может использовать следующее без необходимости макроса препроцессора:

#if os(iOS) 
// iPhone specific code 
#endif 
+0

Swift не будет '# ifdef'. Вы можете использовать '# o o (iOS)' для условной компиляции кода для данной ОС. –

+0

Обновлено с предложением от @PetahChristian - спасибо! –