Использование initWithContentsOfURL для отображения сообщения, но возникли проблемы?
Я пытаюсь отобразить IUAlertview с пользовательским сообщением, полученным с веб-сайта при загрузке приложения. У меня есть контроль над сайтом, поэтому идея в том, что если я хочу изменить сообщение, я могу просто изменить сайт. Этим утром я спросил о том, как обновить персонализированное сообщение, и эта идея стала результатом, но теперь, когда я пытаюсь его закодировать, я получаю ошибки.
После просмотра других вопросов initWithContentsOfURL о переполнении стека я придумал следующий код:
NSStringEncoding *encoding = NULL;
NSError *error;
NSString *myHtml = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.gcsp.webuda.com/hi.htm"] usedEncoding:encoding error:&error];
UIAlertView *message1 = [[UIAlertView alloc] initWithTitle:myHtml
message:myHtml
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message1 show];
Я положил с в viewWillAppear
метод, и он срабатывает, когда пользователь открывает приложение. Тем не менее, сообщение и заголовок UIAlertview не заполнены, и приложение не сообщает об ошибках. Может кто-нибудь помочь мне понять, почему мой код не работает?
Я очень ценю помощь!!
1 ответ
Если вы знаете, что кодировка текста на сайте всегда будет одинаковой, вы можете использовать метод:
- (id)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;
вместо.
Я бы также предложил выполнять сетевые операции в фоновом режиме:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),
^{
NSError *error;
NSString *myHtml = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.gcsp.webuda.com/hi.htm"] encoding:NSUTF8StringEncoding error:&error];
UIAlertView *message1 = [[UIAlertView alloc] initWithTitle:myHtml
message:myHtml
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
//UI updates should be on main thread
dispatch_async(dispatch_get_main_queue(),
^{
[message1 show];
});
});