代码之家  ›  专栏  ›  技术社区  ›  MattyK14

如何将HMHome转换为javascript以进行React Native?

  •  1
  • MattyK14  · 技术社区  · 8 年前

    HMHome 可解释为本机反应的对象。我想我需要使用 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}];
    }
    

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

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   MattyK14    3 年前

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

    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}];
    

    #主页。js公司

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