Мое приложение представляет собой набор инструментов VOIP-телефонии.
У меня есть серия элементов управления UISwitch, которые пользователь может использовать для изменения своих настроек, например, если он хочет изменить свои настройки идентификатора вызывающего абонента.
Когда пользователь меняет настройку, мне нужно позвонить на платформу телефонии через ее Restful API. Если вызов Restful завершится неудачно, я хотел бы сбросить переключатель к его предыдущей настройке. Например, если пользователь включает идентификатор вызывающего абонента, и он выходит из строя из-за сбоя соединения, я бы хотел, чтобы коммутатор снова переключился на выключение.
Я реализовал это в моем методе switchChangedValue, однако он создает неприятный цикл. Когда происходит сбой, я устанавливаю UISwitch на предыдущую настройку, но он, в свою очередь, снова вызывает метод switchChangedValue, который завершается ошибкой и т. Д.
Вот часть моего метода switchChangedValue, любые идеи приветствуются.
//Check if its a valid response from the XSI server
if ([bs getHTTPResponseCode] >= 200 && [bs getHTTPResponseCode] < 300) {
//This is the successful case
}
else
{
// I throw an alert here
//Id really like to change the UISwitch back if it goes wrong but it causes a bad loop.
if (buttonstate == false){
[switchbutton setOn:YES animated:YES];
//This invokes my switchChangedValue again
}
else if (buttonstate == true){
[switchbutton setOn:NO animated:YES];
//This invokes my switchChangedValue again
} else{
NSLog(@"Something went bad");
}
[bs release];