2

家を作って部屋を追加することはできましたが、家にアクセサリーを追加しようとすると、

- (IBAction)addAccessory:(id)sender {
    [myHome addAccessory:myAccessory completionHandler:^(NSError *error) {
        if (!error) {
            NSLog(@"%@ accessory successfully added to %@ home",
                  myAccessory.name, myHome.name);
        } else {
            NSLog(@"addAccessory error = %@",[error localizedDescription]);
        }
    }];

}

テキストフィールドと 2 つのボタンを使用して「電球のセットアップコードを入力してください」というメッセージとともにアラートが表示されますが、テキストフィールドにセットアップコードを入力することはできません。「セットアップ」ボタンをクリックすると、アクションを実行せずにアラートが閉じられ、「キャンセル」 」を選択すると、「The operation could not be completed. (HMErrorDomain error -70890.)」というエラーを表示するエラー ブロックになります。

デリゲート メソッド「didFindNewAccessory」は、accessory.services を空として出力しています。

-(void)accessoryBrowser:(HMAccessoryBrowser*)browser didFindNewAccessory:
(HMAccessory*)accessory {
    NSLog(@"Accessory discovered is %@",accessory);
    NSLog(@"Accessory services is %@",accessory.services);
}

例:
発見されたアクセサリは [ 名前 = ロック、識別子 = D8946530-BCD9-4244-AB49-AF507105CC73 ] アクセサリ サービスは ( )

4

1 に答える 1

1

どこからaddAccessory:(id)senderメソッドを呼び出していますか?
: メソッドで実行してdidFindNewAccessory、検出されたすべてのデバイスに対して呼び出されるため、検出されたデバイスを追加できます。

変数myAccessoryはプロパティだと思いますか?メソッドでインスタンス変数として設定したり、メソッドまたはパラメーターとして使用したりすることはありません。手動で初期化していない場合、初期化されていない可能性があります。

もう 1 つの可能性は、HomeKit アクセサリ シミュレータでサービスを設定していないことです。これは、デバイスの説明を取得しても、サービスを取得できない理由を説明しています。

myAccessory を作成している場所を示すコードを追加して、メソッドを呼び出すことはできますか?

編集:
私はそれが機能したのと同じ問題を抱えていましたが、どういうわけか機能しなくなりました。セットアップ コードを入力できず、少しググってみました。解決策は、iOS シミュレーターを開き、ハードウェア -> キーボード メニューの [ハードウェア キーボードの接続] オプションのチェックを外すことでした。その後、コードを入力できる数字キーボードが表示されます。

于 2014-07-17T14:04:10.327 に答える