-2

我的要求是必须为附件和位置事件创建 HMEventTrigger。例如:我有一个名为 acc1 的配件,它具有电源特性。例如,如果 acc1 开启并且当我到达某个位置时,我想创建 HMEventTrigger。在这种情况下,我为 acc1 创建了谓词,如下所示

HMCharacteristicWriteAction 的谓词

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

HMLocationEvent 的谓词

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

例如:如果 ACC1.ON 和 LOCATIONEVENT 则执行 HMACTIONSET

如果我结合 pred1 和 pred2 对象,它也包括当前日期,但我不想包括日期。所以我必须使用 pred1 和 pred2 创建触发器,而不包括时间或日期,只需要包括位置。感谢您阅读我的帖子。任何想法/建议都是有帮助的。

4

1 回答 1

1

您的问题陈述不清楚。也许创建一个新HMEventTrigger的位置事件作为events数组中唯一的对象?

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) {
     // ...
 }];
于 2016-07-18T19:28:36.283 回答