Разделение классов между iphone и яблочными часами

Я надеялся, что кто-то может пролить свет на это. Я пробовал исследовать, но ничего не мог найти...

Есть ли способ поделиться классом между приложением iPhone и расширением чата Apple?

Скажем, в расширении часов у меня есть класс myClass; Я не могу использовать этот класс в приложении телефона. Есть ли способ обойти это?

Ответы

Ответ 1

Приложение iPhone и расширение часовых поясов Apple - это разные цели в вашем проекте. Для каждого файла (кроме файла .h) вы можете указать, к какой цели вы хотите включить.

Есть как минимум два способа сделать это.

1) В верхнем меню выберите Вид → Утилиты → Инспектор файлов. Появится правая панель и вы найдете раздел Целевое членство с флажками рядом с доступными целями для проекта. Проверьте цели, к которым вы хотите включить этот файл. В этом случае приложение iPhone и расширение WatchKit.

2) Вы также можете щелкнуть по проекту, чтобы перейти к настройкам проекта. Выберите желаемый объект. (например, приложение iPhone или расширение WatchKit), перейдите на вкладку Сборка факс. В источниках компиляции вы можете щелкнуть значок " +", чтобы добавить больше файлов для сборки для цели. (т.е. myClass.m в вашем случае)

Надеюсь, это поможет!

Ответ 2

Еще одно возможное решение (и то, что в конечном итоге решило мою проблему) - убедиться, что ваш Watch Target также знает, где живет ваш файл моста!

  • Откройте настройки проекта и выберите расширение WatchKit.

  • В настройках сборки найдите ключевое слово "мостик"

  • Убедитесь, что установлен файл заголовка Objective-C Bridging Header введите описание изображения здесь

Ответ 3

Есть два способа сделать это.

  • Создайте инфраструктуру с вашим общим кодом и привяжите эту структуру к расширению WatchKit и вашему iPhone-приложению. Это самый чистый и рекомендуемый способ.

  • Добавьте исходный файл (и зависимостей) для MyClass к вашим целевым объектам iPhone и WatchKit.

Ответ 4

Если вы хотите поделиться классами Obj-C из приложения iPhone в коде Swift в расширении приложения просмотра:

  • Включите все файлы .m, которые вы хотите использовать в приложении iPhone, в приложение Target для WatchKit Extension (т.е. в целевом членстве).

  • Создайте файл заголовка моста (новый файл .h) (обычно называемый   [Projectname] -Bridging-header.h). Вы можете по желанию назвать его как   [projectName] -Watch-Bridging-Header.h(или что-нибудь еще, что   подходит).

  • Включить все файлы .h, соответствующие .m, включенному в WatchKit Задача расширения в качестве импорта в файле заголовка моста (например, #import "MyLogger.h" ).
  • Вы готовы использовать классы Obj-C в коде приложения WatchKit Extension Теперь.