Как я могу ссылаться на класс Swift в моем расширении WatchKit из основного кода iOS?

Я пытаюсь заставить свое приложение iOS отправлять расширению WatchKit набор данных каждый раз, когда эти данные обновляются с сервера.

Вот как выглядит код в моем приложении для iOS (имена изменены)

[WatchKitDataModel loadDataFromSource: currentData]

Однако приложение iOS не распознает WatchKitDataModel.

Ошибка "использование необъявленного модификатора".

Пожалуйста, помогите мне заставить мои приложения общаться друг с другом!


person Konstantin Gizdarski    schedule 15.01.2015    source источник


Ответы (2)


Убедитесь, что класс-нарушитель добавлен как в цель приложения, так и в цель WatchKit на панели «Документ».

введите здесь описание изображения

На картинке показано TodayExtension, но принцип тот же.

person Warren Burton    schedule 15.01.2015
comment
Это было очень полезно для меня. Я был в тупике, когда сделал свой класс общедоступным и импортировал его в свой набор для наблюдения, но он все еще не появлялся. Кто знал, что это был простой флажок. Ради интереса это сделано? Мне кажется немного странным необходимость устанавливать флажок в IDE, чтобы сделать код доступным для другой цели. Я думал, что простого импорта должно быть достаточно. - person Lightbulb1; 25.03.2015

Чтобы использовать код между расширением WatchKit и содержащим его приложением, создайте встроенную платформу Framework в своем приложении. Фреймворки — это рекомендуемый Apple инструмент для обмена кодом внутри приложения и между приложениями.

Чтобы создать встроенную платформу в Xcode 6, выберите свой проект и перейдите в раздел Файл> Создать> Цель... Затем в открывшемся диалоговом окне выберите iOS> Framework & Library> Cocoa Touch Framework<. /сильный>. Нажмите Далее. Дайте ему имя SomethingKit, похожее на то, что использует Apple, например. UIKit, HealthKit, WatchKit. Теперь создайте новые классы и другой общий код в файлах внутри вашего нового фреймворка. Если вы хотите использовать его в любых других целях, например в расширении WatchKit или содержащем его приложении, не забудьте import SomethingKit.

А, и не забудьте указать public уровень доступа к общедоступным классам и функциям в вашей платформе.

Для получения дополнительной информации о фреймворках для совместного использования кода, например о том, какие вещи нельзя включать в фреймворки, см. статью Apple: Использование встроенной платформы для совместного использования кода.

Об этом также есть интересное видео сессии WWDC 2014: Building Modern Frameworks.

person alondono    schedule 30.04.2015