Отправить 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, который быстро сериализует любой объект для этой цели. Он включает в себя игровую площадку, которая показывает, как выполнять сериализацию / десериализацию.

  • Как сделать анимированную кнопку в Apple WatchKit?
  • WatchKit: не удалось найти интерфейс класса контроллера
  • Watchkit AppIcon - набор иконок приложений под названием «AppIcon» не имел никакого применимого контента
  • Можно ли использовать IBOutletCollection с WatchKit?
  • Частота обновления частоты сердечных сокращений на телефоне
  • Подготовить эквивалент readyForSegue в WatchKit
  • Обнаружение, когда символ Unicode не может быть отображен правильно
  • ОШИБКА: «Сообщение ответ заняло слишком много времени» отправка сообщения на устройство Комплект часов OS 2
  • Полезная нагрузка для уведомления о просмотре приложений
  • Профиль профиля Provisioning расширения WatchKit?
  • дублирующие символы для архитектуры x86_64 с интерфейсами
  • Interesting Posts

    Ошибка при попытке получить сертификат: указанный элемент не найден в цепочке ключей

    StoreKit.isSupported возвращает false на устройстве iOS

    Как получить данные из файла на Icloud Swift

    Эквивалент «описания» для класса C ++ в Objective-C ++?

    Как загрузить файл IPA в новый testflight?

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

    Невозможно подключить IBOutlet в Interface Builder

    UIBarButtonItem с пользовательским представлением, не отображающимся после первого просмотра

    MagicalRecord saveWithBlock vs saveToPersistentStoreAndWait

    Идентификатор устройства для Tapjoy, Google Analytics

    Swift – Как записывать видео в формате MP4 с помощью UIImagePickerController?

    iOS In-App Покупка и обнаружение автоматической возобновляемой подписки

    Командная строка автоматизации пользовательского интерфейса настраивает, какой симулятор для универсального приложения

    Безопасный dealloc объекта ObjC на устройстве iOS

    Запуск Screen.storyboard не работает должным образом Xcode 7

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.