UIAlertView не будет показывать - PullRequest
       1

UIAlertView не будет показывать

0 голосов
/ 22 февраля 2011

У меня есть программа, которая запрашивает строку JSON.Я создал класс, который содержит метод подключения ниже.Когда появляется корневое представление, оно запрашивает этот класс и метод для загрузки некоторых данных для корневого представления.Когда я проверяю код ошибки (изменяя URL-адрес хоста на 127.0.0.1), я ожидаю, что появится предупреждение.Поведение состоит в том, что корневое представление просто становится черным, и приложение прерывается без предупреждения.Никаких ошибок в режиме отладки на консоли тоже нет.Есть мысли по поводу этого поведения?Я искал подсказки к этому часами безрезультатно.Заранее благодарим за помощь.

Примечание: вызывается условное условие (ошибка) * , а также код UIAlertView.

- (NSString *)connect:(NSString *)urlString {
NSString *jsonString;

UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;

NSError        *error = nil;
NSURLResponse  *response = nil;
NSURL *url = [[NSURL alloc] initWithString:urlString];

NSURLRequest *req = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
NSData *_response = [NSURLConnection sendSynchronousRequest: req returningResponse: &response error: &error];

if (error) {
    /* inform the user that the connection failed */
    //AlertWithMessage(@"Connection Failed!", message);
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oopsie!" 
                                                    message:@"Unable to connect! Try later, thanks."
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles: nil];
    [alert show];
    [alert release];
} else {
    jsonString = [[[NSString alloc] initWithData:_response encoding:NSUTF8StringEncoding] autorelease];
}

app.networkActivityIndicatorVisible = NO;

[url release];

return jsonString;

}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

UIWindow уже существует, когда вызывается [alert show]?UIAlertView show должно вставлять оповещение в иерархию представлений, но если еще нет окна / корневого представления, его некуда вставить, поэтому [release alert] просто выпускает его преждевременно.

0 голосов
/ 22 февраля 2011

Заменить if ( error ) на if ( ! _response ).

NSURLConnection * sendSynchronousRequest документация:

.... ошибка Параметр Out используется, если при обработке запроса произошла ошибка. Может быть NULL.

Возвращаемое значение Загруженные данные для запроса URL. Возвращает nil, если соединение не может быть создано или загрузка не удалась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...