Как конвертировать HMHome в javascript для React Native?

1

В настоящее время я работаю над подключением некоторых функций HomeKit к React Native. Мне нужно, чтобы мой массив объектов HMHome мог быть интерпретирован для React Native. Я предполагаю, что мне нужно использовать RCTConvert, но я немного взволнован.

Я подписываюсь на событие, в котором пользователь HMHome готов к возврату, как показано ниже в HomeKitPage.js.

this.subscription = RNHomeKitEmitter.addListener(
      'homesReady',
      (homes) => console.log(homes)
    );

Мой RNHomeKit.m испускает событие homesReady и возвращает список домов, как показано ниже.

- (void)homeManagerDidUpdateHomes:(HMHomeManager *)myHomeManager {
  RCTLog(@"HOMEMANAGERDIDUPDATEHOMES");
  RCTLog(@"PRIMARY HOME:  %@", self.myHomeManager.primaryHome);
  RCTLog(@"MY LIST OF HOMES: %@", self.myHomeManager.homes);

  [self sendEventWithName:@"homesReady" body:@{@"homes": self.myHomeManager.homes}];
}

Выход для моего списка домов из RCTLog:

MY LIST OF HOMES: (
    "[ name = Matt Awesome Home, primary : Yes ]"
)

Таким образом, мой вывод, увиденный консолью JavaScript из EventEmitter, представляет собой массив, в котором индексом является число пользователей, и каждый объект имеет null (как и ожидалось).

Как я могу преобразовать это в массив объектов JSON, которые можно использовать для моего JavaScript?

Теги:
react-native
react-native-ios

1 ответ

0
Лучший ответ

Это не может быть идеальным способом сделать это, но он работает:

RNHomeKit.m

for (HMHome *home in self.myHomeManager.homes) {
    NSDictionary *homeObject = @{
                   @"name": home.name,
                   @"isPrimary": [NSNumber numberWithBool:home.primary]
                  };
    [homesArray addObject: homeObject];
  };

  RCTLog(@"DA HOMES ARRAY: %@", homesArray);
  [self sendEventWithName:@"homesReady" body:@{@"homes": homesArray}];

HomeKitPage.js

  RNHomeKit.createHome();
    this.subscription = RNHomeKitEmitter.addListener(
      'homesReady',
      (response) => this.setState({ homes: response.homes })
    );
  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню