2016-04-17 8 views
1

Моя цель - отправить словарь в watchKit из приложения iOS до запуска приложения watchKit. Я использую интерактивные сообщения (sendMessage), чтобы быстро перевести словарь.Отправка словаря из приложения iOS в WatchKit - watchOS2

Проблема - словарь создан внутри MainViewController. Если я объявляю WCSession и активирую его внутри MainViewController, я могу без проблем передать данные на watchKit на симуляторе. Но когда я тестирую процесс на реальном устройстве - приложение iOS никогда не вызывается.

Проснувшись приложение в фоновом режиме осуществляется путем объявления и активации WCSession внутри AppDelegate, но есть еще один блокатор - я не могу создать словарь - потому что несколько переменных для его создания объявляются в MainViewController.

Я пробовал третий подход - обертывание WCSession внутри одноэлементного (suggested от Наташи робота). Единственным недостатком этой структуры является то, что интерактивная передача сообщений никогда не работает и никогда не тестировалась самой Наташей.

Так что я смущен - что мне делать, чтобы отправить словарь на watchKit?

Спасибо за любые идеи

ответ

0

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

0

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

Как только это произойдет, вы можете использовать диспетчер WCSession для перевода словаря хранилища данных.

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

Если часы запрашивают данные, но они еще не созданы, вам необходимо вернуть ответ «Нет данных», чтобы на часах отображалось сообщение с сообщением пользователю о том, как открыть приложение и установить контроллер вида переменные, используемые для создания данных.

На самом деле лучше отделить и включить ответственность в эти различные компоненты. Контроллер представления не должен содержать никакого кода, связанного с созданием или переносом словаря.

Сказав все, что ...

Я не могу создать словарь - потому что несколько переменных для его создания объявляются в MainViewController

Это действительно звучит как an XY problem. Вы были сосредоточены на проблеме «отправки» этого словаря больших массивов, который вы должны создать, когда, вероятно, есть более простой способ выполнить то, что вы на самом деле пытаетесь сделать с этим большим словарем, в первую очередь.

Во-первых, я задаюсь вопросом, почему вы отправляете эти огромные вычисленные данные на часы, чтобы он мог что-то сделать, вместо того, чтобы обрабатывать это вычисление со стороны телефона, а затем отправлял очень маленький набор " Результаты".

Возможно, вам стоит описать реальную проблему с Y, которую вы хотите решить на часах, вместо того чтобы просить нас о решении X, которое может оказаться ненужным.