2017-09-15 8 views
1

私は現在、いくつかのHomeKit関数をReact Nativeにブリッジすることに取り組んでいます。私はHMHomeオブジェクトの配列をReact Nativeに解釈可能に変換する必要があります。私はRCTConvertを使用する必要があると仮定しますが、私は少しばかげています。React NativeのためにHMHomeをjavascriptに変換するには?

HomeKitPage.jsのように、ユーザーのHMHomeが返される準備ができているイベントに登録しています。

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

マイRNHomeKit.mhomesReadyイベントを放出し、下図のように家のリストを返します。

- (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オブジェクトの配列に変換するにはどうすればよいですか?

答えて

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 }) 
    ); 
    } 
関連する問題