gpt4 book ai didi

javascript - 如何将 HMHome 转换为 React Native 的 JavaScript?

转载 作者:行者123 更新时间:2023-11-28 04:11:20 26 4
gpt4 key购买 nike

我目前正在致力于将一些 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's Awesome Home, primary : Yes ]"
)

因此 JavaScript 控制台从 EventEmitter 看到的输出是一个数组,其中索引是用户的房屋数量,每个对象都是 null(如预期)。

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

最佳答案

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

#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 })
);
}

关于javascript - 如何将 HMHome 转换为 React Native 的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com