使用initWithContentsOfURL显示消息,但有问题?

时间:2013-07-23 01:23:23

标签: ios objective-c 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 个答案:

答案 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];
    });
});