【问题标题】:How to convert HMHome to javascript for React Native?如何将 HMHome 转换为 React Native 的 javascript?
【发布时间】:2018-02-24 22:41:48
【问题描述】:

我目前正致力于将一些 HomeKit 功能桥接到 React Native。我需要能够将我的 HMHome 对象数组转换为可解释为 React Native。我想我需要使用RCTConvert,但我有点慌张。

我正在订阅一个用户的HMHomes 已准备好返回的事件,如下图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 的输出是:

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

所以我从 EventEmitter 的 JavaScript 控制台看到的输出是一个数组,其中索引是用户的住宅数量,每个对象都是 null(如预期的那样)。

如何将其转换为我的 JavaScript 可以使用的 JSON 对象数组?

【问题讨论】:

    标签: javascript ios objective-c react-native react-native-ios


    【解决方案1】:

    这不是理想的方法,但它确实有效:

    #RNHomeKit.m

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

    #HomeKitPage.js

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 2021-06-18
      • 1970-01-01
      • 2021-01-08
      • 2021-08-07
      • 2020-04-17
      • 2020-08-22
      • 2020-09-05
      相关资源
      最近更新 更多