2015-05-27 3 views
0

Я работаю над этими экранами входа. Я хочу, чтобы пользователь был уведомлен о неудаче входа в систему. Например, если пользователь вводит неверные учетные данные или сервер, к которому подключается мое приложение, он должен показать неудачу входа в систему. Это мой код до сих пор:Как обращаться с ошибкой

-(void)loginSucces 
{ 
    [self showLoginProcess:false]; 
    PaMainViewController * vc = [[PaMainViewController alloc] init]; 
    [self.navigationController pushViewController:vc animated:YES]; 
} 

-(void)loginFailed 
{ 
    //TODO: handle error 
    [self showLoginProcess:false]; 
    NSLog(@"LoginVC Fail!"); 
} 
+0

Хорошее форматирование кода помогает. – zaph

+1

В чем ваш вопрос? Что вы хотите совершить при ошибке? –

+0

вы можете использовать 'UIAlertView' для уведомления пользователя об ошибке или вы можете использовать' UILabel' с сообщением об ошибке в нем. Это то, что вы ищите? – Akhilrajtr

ответ

0

Надеюсь, это то, что вам нужно. Используйте UIAlertView, если вы просто хотите уведомить пользователя о том, что логин не выполнен.

-(void)loginFailed 
{ 
    //TODO: handle error 
    [self showLoginProcess:false]; 
    NSLog(@"LoginVC Fail!"); 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"LoginVC Fail!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; 
    [alert show]; 
} 
+0

, добавив 'delegate: self', не применяя методы делегирования, приведет к сбою приложения. – Akhilrajtr

+0

Довольно уверен, что это не сбой, но вы правы в этом: вам, конечно, не нужно добавлять делегата, если вы не планируете его использовать :) –

+0

'UIAlertView' устарел с' iOS 8.0'. Вы должны использовать 'UIAlertControiller'. –

0

Вы можете отобразить UIAlertView с сообщением, или вы можете использовать любые уведомления сторонних тостов.

0

Лучший подход, когда сетевой запрос заканчивается некоторым результатом, обработать этот результат и показать его пользователю. Обычно сервер предоставляет некоторую удобочитаемую информацию о причине сбоя. Такая же история, когда по какой-то причине сервер недоступен, просто возьмите NSError и покажите пользователю localizedDescription.

Почему именно так. Пользователь получит некоторую полезную информацию, и у вас будет меньше головной боли с локализацией.

Хороший пример: сеть недоступна. В таком случае NSerrorlocalizedDescription обеспечит хорошее объяснение проблемы, и пользователь может выполнить соответствующие действия, например, включить WiFi или выйти наружу, чтобы восстановить соединение 3g.

+0

За исключением того, что ваш пользователь не является разработчиком программного обеспечения, и сообщение об ошибке будет для них более чем бесполезным. Подумайте о том, что это означает для пользователя, есть ли смысл показывать сообщение об ошибке вообще и помогает ли вообще показывать что-либо, кроме «извините, это не помогло». – gnasher729

+0

Большинство '' NSError '' имеют 'localizedDescription', которые являются удобоваримыми для конечного пользователя. Также хорошо управляющий сервер также предоставляет описание ошибок для конечного пользователя. Например, если нет сети, у вас будет приятное сообщение на всех языках, когда сервер не за исключением пароля, вы также должны получить хороший ответ. Другим преимуществом является то, что сервер-сопровождающий может предоставлять некоторые пользовательские сообщения, например «сервер до 5 утра». Также, если есть большой провал, чем легче получить отчет о несогласии с ошибкой (не учитывает, что конечный пользователь не может понять сообщение). Только для некоторого сценария вы можете предоставить исключение –