Отправить NSObject функцией watchConnectivity

Я работаю над версией нашего приложения WatchOS 2 и настаиваю на том, что я могу отправлять строку только с помощью функции updateApplicationContext: (NSDictionary *) ».

Я надеялся, что могу создать NSObject с некоторыми переменными для отправки в качестве объекта в этом NSDictionary. Через несколько дней я до сих пор не нашел решения этой проблемы. Есть ли способ отправить NSObject над функцией?

Если нет способа отправить NSObject, возможно ли отправить что-то вроде структуры?

Мой код выглядит следующим образом:

-(void)updateWatchData { //Objective-C if ([WCSession isSupported]) { WCSession *session = [WCSession defaultSession]; session.delegate = self; [session activateSession]; if(session.isPaired) { //Objective-C DLog("Sending watch data"); NSMutableArray *kalenderData = [[NSMutableArray alloc] init]; for (int i = 0; i < self.dataContainerViews.count; i++) { DataContainerView *container = self.dataContainerViews[i]; if(container.listType == ListGPKalender){ for(int j = 0; j < container.tableArray.count; j++){ GrandPrix *gp = container.tableArray[j]; WatchGrandPrix *watchGp = [[WatchGrandPrix alloc] init]; watchGp.gpnaam = gp.gpnaam; [kalenderData addObject:watchGp]; } } } NSArray *keys = [NSArray arrayWithObjects:@"kalenderData", nil]; NSArray *objects = [NSArray arrayWithObjects:kalenderData, nil]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; NSError *anyError; if([[WCSession defaultSession] updateApplicationContext:dictionary error:&anyError]){ DLog("Data Send!"); }else{ DLog("Failed to send data with error: %@", anyError); } } } } 

И NSObject – это просто:

 @interface WatchGrandPrix : NSObject @property(nonatomic,strong) NSString *gpnaam; @end 

Ошибка, которую я получил, была

Не удалось отправить данные с ошибкой: Error Domain = WCErrorDomain Code = 7010 «Полезная нагрузка содержит неподдерживаемый тип». UserInfo = {NSLocalizedDescription = Полезная нагрузка содержит неподдерживаемый тип., NSLocalizedRecoverySuggestion = Только передать действительные типы.}

Благодаря!

2 Solutions collect form web for “Отправить NSObject функцией watchConnectivity”

Вы можете преобразовать объект в представление списка свойств (в основном вместо массива вашего объекта модели у вас есть массив словарей, где каждый словарь является отображением значений, где ключ является именем переменной, а значение является plist совместимый тип, представляющий значение).

Другой вариант, который будет менее эффективен по пропускной способности, заключается в том, чтобы сделать ваш объект NSSecureCoding совместимым и использовать что-то вроде NSKeyedArchiver для преобразования его в NSData и отправки массива NSData.

Я отправляю пользовательские объекты, сериализуя их в строку Json. Я создал проект github, который быстро сериализует любой объект для этой цели. Он включает в себя игровую площадку, которая показывает, как выполнять сериализацию / десериализацию.

  • Как проверить различные размеры шрифта (динамический тип) на часах?
  • WatchKit: Что такое «Kermit» и что означает этот оператор консоли?
  • Предотвратить развертывание (отключить) приложение WatchKit с iOS iPhone App в Xcode
  • Watchkit AppIcon - набор иконок приложений под названием «AppIcon» не имел никакого применимого контента
  • WatchOS2 WCSession Сколько делегатов может иметь WCSession в WatchKitExtension?
  • Кнопка WKInterface не изменяет заголовок
  • Изображения на часах яблока
  • Ошибка WatchKit - не удается найти класс контроллера интерфейса '' для создания экземпляра
  • Использование короны часов для управления WKInterfaceSlider
  • WKInterfaceMap отключить триггер на родной карте Apple Watch
  • Невозможно архивировать приложение для просмотра Apple - watchkitapp Extension.appex: нет такого файла или каталога
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.