【发布时间】:2014-02-14 16:48:32
【问题描述】:
所以我有一个方法 A,它基本上检查 UISwitches 的当前状态,然后通过文本短信服务 API 提醒用户。然而;因为它一直在检查引脚的状态,所以我不希望它发送 50000 次文本(向 SMS 服务发送垃圾邮件);此方法中的最后一个 FOR 循环是检查是否应该检查用户的循环;但是,就其当前状态而言,每当应用程序运行时,它都会不断发送垃圾邮件。
谢谢,如果您需要更多说明,请询问。
方法一:
- (void)setInput:(NCDigitalInput *)input
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *baseString;
uint8_t value = input.value;
self.inputLabel.text = [NSString stringWithFormat:@"0x%0.2X",value];
for (UISwitch *temp in switchArrayIn)
{
temp.on = (value & 1);
value >>= 1;
}
for(int i = 0; i<switchArrayIn.count; i++){
if(![defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dRecentlyAlerted",i]] && ([[switchArrayIn objectAtIndex:i] isOn]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dBool",i]]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInputAlertOn%dBool",i]])){
[defaults setBool:TRUE forKey:@"digitalInput%dRecentlyAlerted"];
baseString = [defaults objectForKey:@"digitalInput%d"];
NSString *stringSMS = [baseString stringByAppendingString:@" has turned on"];
[self digitalSMSCheck:i :stringSMS];
}
if(![defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dRecentlyAlerted",i]] && !([[switchArrayIn objectAtIndex:i] isOn]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInput%dBool",i]]) && ([defaults boolForKey:[NSString stringWithFormat:@"digitalInputAlertOff%dBool",i]])){
[defaults setBool:TRUE forKey:@"digitalInput%dRecentlyAlerted"];
baseString = [defaults objectForKey:@"digitalInput%d"];
NSString *stringSMS = [baseString stringByAppendingString:@" has turned off"];
[self digitalSMSCheck:i :stringSMS];
}
}}
【问题讨论】:
-
难道你不能有一个在 UISwitch 的值发生变化时调用的方法,而不是在循环中检查每个 UISwitch 吗?
-
这基本上是一种故障保护,它会在开关自行关闭时提醒用户(根据应用程序的用途,这种情况会发生)。
-
不清楚为什么您无法检测到开关的变化。这一切都发生在您的应用程序中,对吗?改变开关的是用户事件或您的代码。
标签: ios objective-c sms twilio multiple-conditions