如何为 React Native 将 HMHome 转换为 javascript?
How to convert HMHome to javascript for React Native?
我目前正致力于将一些 HomeKit 功能桥接到 React Native。我需要能够将我的 HMHome
对象数组转换为可解释为 React Native。我假设我需要使用 RCTConvert
,但我有点慌张。
我正在订阅一个事件,其中用户的 HMHome
已准备好返回,如下面 HomeKitPage.js
中所示。
this.subscription = RNHomeKitEmitter.addListener(
'homesReady',
(homes) => console.log(homes)
);
我的 RNHomeKit.m
正在发出 homesReady
事件和 returns 房屋列表,如下所示。
- (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 ]"
)
所以我从 EventEmitter 的 JavaScript 控制台看到的输出是一个数组,其中索引是用户的房屋数量,每个对象是 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 })
);
}
我目前正致力于将一些 HomeKit 功能桥接到 React Native。我需要能够将我的 HMHome
对象数组转换为可解释为 React Native。我假设我需要使用 RCTConvert
,但我有点慌张。
我正在订阅一个事件,其中用户的 HMHome
已准备好返回,如下面 HomeKitPage.js
中所示。
this.subscription = RNHomeKitEmitter.addListener(
'homesReady',
(homes) => console.log(homes)
);
我的 RNHomeKit.m
正在发出 homesReady
事件和 returns 房屋列表,如下所示。
- (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 ]"
)
所以我从 EventEmitter 的 JavaScript 控制台看到的输出是一个数组,其中索引是用户的房屋数量,每个对象是 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 })
);
}