2015-02-14 2 views
5

In meiner Anwendung verwende ich HomeKit. Sie können HMHome und HMRoom Objekt hinzufügen/entfernen, aber ich möchte auch einige Metadaten hinzufügen. In meiner Anwendung möchte ich zum Beispiel ein Symbol zu einem HMRoom hinzufügen und ihm ein Array von Elementen hinzufügen können.HomeKit HMHome und HMRoom Identifikatoren/zusätzliche Metadaten

Meine Lösung ist, dass ich es in Kombination mit CoreData verwende und die zusätzlichen Informationen über den HMRoom speichern, aber es gibt keine Möglichkeit, die HMHome- und HMRoom-Objekte außer ihrem Namen zu identifizieren. Dies wäre kein Problem, wenn meine Anwendung die einzige Anwendung in der Welt wäre, um die HomeKit-Objekte zu bearbeiten, aber natürlich könnte es andere Anwendungen geben, die HMHome- und HMRoom-Objekte anpassen (sie entfernen und umbenennen).

So würde ich wirklich ein Problem haben, wenn der Benutzer eine der folgenden Dinge tut:

  1. starten meine Anwendung
  2. hinzufügen HMHome und HMRoom Objekt
  3. einige Metadaten zum HMRoom Objekt hinzufügen , durch meine Anwendung, die in meiner CoreData-Datenbank gespeichert ist
  4. Beenden Sie meine Anwendung
  5. Starten Sie eine andere Anwendung und benennen Sie die HMRoom sie gerade erstellt
  6. meine Anwendung starten wieder

Da es keine bekannte Kennung für die HMHome und HMRoom Objekte ist, kann ich nicht die Metadaten ich mehr in Coredata gespeichert finden und dass Metadaten tatsächlich verloren, weil ich nicht mehr mit dem Namen übereinstimmen mit dem erstellten HMRoom mit den Daten in meiner CoreData-Datenbank.

Meine Frage lautet also: Gibt es eine Möglichkeit, HMRoom- und HMHome-Objekte außer ihrem Namen zu "identifizieren"?

Antwort

1

Gemäß der Dokumentation gibt es keinen anderen Bezeichner für HMHome und HMRoom als den Namen. Aber beide haben accessories Eigenschaft, und HMAccessory hat die identifier Eigenschaft, die persistent ist (zumindest bis der Benutzer ein Zubehörteil entfernt und fügt es wieder, was nicht eine gemeinsame Sache zu sehen wäre, hoffe ich).

Sie können also Zubehör, das einem bestimmten Haus oder Raum zugeordnet ist, zusammen mit anderen Metadaten speichern. Und wenn sich der Name des Hauses oder Zimmers ändert, sollten Sie in den meisten Fällen immer noch in der Lage sein, den ursprünglichen Namen zu erkennen, indem Sie das gespeicherte Zubehör betrachten.

+0

Ich denke, das ist die bestmögliche Lösung im Moment. Es ist sehr unwahrscheinlich, dass ein Benutzer Zubehör zwischen Wohneinheiten verschiebt, so dass wir das Zubehör im Haushalt getrost verwenden können, um es zu identifizieren. Dasselbe gilt jedoch nicht für Benutzer, die Zubehör zwischen Räumen verschieben. Ich denke, eine Erweiterung dieses Ansatzes wäre das Erstellen von Inventaren von Home & Room Accessory IDs und diese als "Fingerabdruck" für jedes Objekt zu verwenden. Wenn sich ein Home- oder Room-Name ändert, können Sie auf den "Fingerabdruck" zurückgreifen, um ihn erneut zu identifizieren. Sie können auch prozentuale Übereinstimmungen zulassen, um Zubehörbewegungen zu berücksichtigen. –

3

In iOS9 können Sie den uniqueIdentifier verwenden, um immer dasselbe Objekt zu identifizieren. Diese UUID bleibt gleich, unabhängig davon, ob der Raum umbenannt wird oder nicht.

+0

Können Sie es ausarbeiten? Nicht sicher, worauf du dich beziehst. – huggie

+0

Oh! OK ich habe es. – huggie

+0

Leider scheint sich die UUID-Zeichenfolge jedes Mal beim Start einer neuen App zu ändern. – huggie