2016-07-15 46 views
-2

我的要求是必須爲附件和位置事件創建HMEventTrigger。例如:我有一個名爲acc1的配件,它具有電源特性。例如,我想創建HMEventTrigger,如果acc1處於打開狀態以及何時到達某個位置。在這種情況下,我已經創建了ACC1謂詞像下面爲HMLocationEvent準備NSPredicate

謂詞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]; 

EX:IF ACC1.ON AND THEN LOCATIONEVENT PERFORM HMACTIONSET

如果我組合了pred1和pred2對象,它也包括當前日期,但我不想包含日期。所以我必須在不包含時間或日期的情況下使用pred1和pred2創建觸發器,只需包含位置。感謝您閱讀我的文章。任何想法/建議都很有幫助。

回答

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) { 
    // ... 
}]; 
+0

HI Jal謝謝你回答這個問題。我的問題是我必須結合HMCharacteristicWriteAction和HMLocation事件條件.Ex:如果acc1.ch是On AND location.region,那麼我必須執行HMActionSet。 – SRI