我正在尝试使用加载应用时从网站上提取的自定义消息来显示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消息和标题是空白的,应用程序报告没有错误。有人可以帮我弄清楚为什么我的代码无效吗?
我真的很感激帮助!!
答案 0 :(得分:3)
如果您知道网站上的文字编码始终相同,您可以使用以下方法:
- (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];
});
});