2016-07-15 40 views
-2

Meine Anforderung ist, muss HMEventTrigger für Zubehör und Standort Ereignisse erstellen. Bsp .: Ich habe ein Zubehörteil namens acc1 und es hat eine Leistungskennlinie. Zum Beispiel möchte ich den HMEventTrigger erstellen, wenn die acc1 eingeschaltet ist und wenn ich an einem Ort ankomme. In diesem Fall habe ich die Prädikate für acc1 wie unterPrepare NSPredicate für HMLocationEvent

Prädikat erstellt für HMCharacteristicWriteAction

HMCharacteristicWriteAction *chWr = [writeActionsArr objectAtIndex:0]; 
NSPredicate *pred1 = [HMEventTrigger predicateForEvaluatingTriggerWithCharacteristic:chWr.characteristic relatedBy:NSEqualToPredicateOperatorType toValue:chWr.targetValue]; 

Prädikat für HMLocationEvent

HMLocationEvent *b = (HMLocationEvent*)[locationsArr objectAtIndex:0]; 
NSDateComponents *com = [[NSDateComponents alloc] init]; 
NSPredicate *pred2 = [HMEventTrigger predicateForEvaluatingTriggerOccurringOnDateWithComponents:com]; 

EX: WENN ACC1.ON UND DANN LOCATIONEVENT Führen Sie HMACTIONSET

Wenn ich die beiden Objekte pred1 und pred2 zusammenfasse, enthält es auch das aktuelle Datum, aber ich möchte das Datum nicht einfügen. Also muss ich den Trigger mit dem pred1 und pred2 erstellen, ohne die Uhrzeit oder das Datum einzubeziehen, nur den Standort angeben zu müssen. Danke, dass Sie meinen Beitrag gelesen haben. Irgendwelche Ideen/Vorschläge sind hilfreich.

Antwort

1

Ihre Problemstellung ist nicht klar. Vielleicht erstellen Sie eine neue HMEventTrigger mit dem Ortsereignis als das einzige Objekt im events Array?

HMHome *home = ... // home 
HMLocationEvent *locationEvent = ... // your event variable 
NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; // create your date components 
HMEventTrigger *trigger = [[HMEventTrigger alloc] initWithName:@"eventName" events:@[locationEvent] predicate:[HMEventTrigger predicateForEvaluatingTriggerOccurringOnDateWithComponents:dateComponents]]; 
[home addTrigger:trigger completionHandler:^(NSError *error) { 
    // ... 
}]; 
+0

HI Jal Vielen Dank für die Beantwortung der Frage. Mein Problem ist, dass ich HMCharacteristicWriteAction und HMLocation Event-Bedingungen kombinieren muss. Ex: Wenn acc1.ch auf AND location.region steht, muss ich das HMActionSet ausführen. – SRI